【发布时间】:2017-11-12 21:05:48
【问题描述】:
我正在开发一个简单的纸牌游戏。 我有一个卡片叠,它只是一个图像视图。触摸时,我创建了一个自定义卡片对象(视图)。为了移动卡片,我重写了 Card 对象中的 onTouchEvent 方法。
问题是,如何在点击堆栈创建卡片时立即移动卡片?目前我首先需要点击(创建卡片),抬起手指并再次点击以移动卡片。
我已经见过How to programmatically trigger the touch event in android?,但我猜这只是触发了一个触摸事件。
活动
public void createCard(View v) {
if (mCardCounter < 4) {
Card card = new Card(this);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT));
layoutParams.setMargins(30, 30, 0, 0);
card.setLayoutParams(layoutParams);
mRootFrameLayout.addView(card);
mCardCounter++;
}
卡片
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = this.getX() - event.getRawX();
dY = this.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
this.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
}
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
【问题讨论】:
-
你试过我的建议了吗?成功了吗?
标签: android view move touch-event