【发布时间】:2013-10-17 03:13:00
【问题描述】:
我遇到了这个问题,ACTION_CANCEL 没有被触发,我已经在我的另一个项目中实现了它,它工作正常。似乎ACTION_UP 是在ACTION_DOWN 之后调用的唯一MotionEvent。一旦我的手指不在视图中或屏幕外,我想触发ACTION_CANCEL。
示例场景:我点击一个 LinearLayout 的视图 btw,在 ACTION_DOWN 上,它的背景更改为图像的“点击/变暗”版本,当触发 ACTION_UP 时,它的背景更改回默认值仅当手指在 LinearLayout 内时才显示图像。现在的问题是,当我按下它并将手指放在屏幕上,然后将手指拖到 LinearLayout 之外时,ACTION_UP 仍然会在不应该触发的地方触发。
这是我的代码:
dimView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(final View view,
final MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("TAG", "DOWN");
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
Log.d("TAG", "UP");
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {
Log.d("TAG", "CANCEL");
return true;
}
return false;
}
});
其中:dimView 是一个线性布局
【问题讨论】:
标签: android ontouchlistener motionevent