我在ACTION_CANCEL
没有触发的地方遇到了这个问题,我已经在我的另一个项目中实现了它并且它工作正常。似乎这ACTION_UP
是唯一MotionEvent
被调用的ACTION_DOWN
。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 是一个 LinearLayout