我的应用程序是一个边到边的按钮网格。我正在覆盖所有触摸和运动事件并手动控制行为。一切正常,除了手指被拖出屏幕外。MotionEvent.ACTION_UP 被触发,我不希望这样。我尝试使用 getRawX() 和 getRawY() 来确定(例如,对于顶部和左侧边缘)坐标是否 < 1,但如果快速拖动手指,该值会更高(高达 20)。当 ACTION_UP 被触发时,位置值似乎有点滞后。有没有解决的办法?ACTION_CANCEL 似乎根本没有被触发。
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case (MotionEvent.ACTION_DOWN):
Log.i(classID, "action down");
return true;
case (MotionEvent.ACTION_CANCEL):
Log.i(classID, "action cancel");
// never called
return true;
case (MotionEvent.ACTION_MOVE):
Log.i(classID, "action move");
return true;
case (MotionEvent.ACTION_UP):
Log.i(classID, "action up");
Log.i(classID, "position: " + (int)event.getRawX() + "/" + (int)event.getRawY());
return true;
}
return false;
}