【发布时间】:2012-10-10 00:05:14
【问题描述】:
我的应用程序是一个边到边的按钮网格。我正在覆盖所有触摸和运动事件并手动控制行为。一切正常,除了手指被拖出屏幕外。 MotionEvent.ACTION_UP 被触发,我不希望这样。我尝试使用 getRawX() 和 getRawY() 来确定(例如,对于顶部和左侧边缘)坐标是否
@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;
}
【问题讨论】:
-
“屏幕外”是什么意思,就像从字面上拖动手指直到它从手机上掉下来一样?或者就在您特定小部件的矩形之外?我不确定为什么 Android 会根据您的手指离开手机时的移动方向报告不同的事件。我很好奇你为什么需要这个?
-
我的意思是拖动手指直到它超出屏幕范围。实际上,要告诉您我的应用程序做了什么,实际上需要很长的描述,但它涉及到用户在查看计算机上的视觉反馈时在屏幕上按下/滑动。因此,用户可能会拖开手指,如果发生这种情况,我不希望触发任何事情。
标签: android gesture touchscreen motionevent