【发布时间】:2012-07-23 11:50:43
【问题描述】:
我想在我的活动中处理一个手势。为此,我在我的 Activity 上覆盖了 public boolean onTouchEvent(MotionEvent MEvent) 方法。内容如下:
motionaction = MEvent.getAction();
if(motionaction == MotionEvent.ACTION_DOWN)
{
...
return true;
}
if(motionaction == MotionEvent.ACTION_UP)
{
...
return true;
}
if(motionaction == MotionEvent.ACTION_MOVE)
{
...
return true;
}
motionaction = MEvent.getActionMasked();
if(motionaction == MotionEvent.ACTION_POINTER_DOWN)
{
...
return true;
}
if(motionaction == MotionEvent.ACTION_POINTER_UP)
{
...
return true;
}
return true;
手势如下:
-finger1在屏幕上保持它的位置(实际上是因为总是有一点移动)
-finger2 在屏幕上移动。这是我想要抓住的运动。
我可以抓取 5 个动作,但问题是当两根手指在屏幕上时,ACTION_MOVE 会抓取第一根和第二根手指的移动。 MEvent.getActionIndex() 方法不适用于始终返回 0 的 ACTION_MOVE;我唯一能做的就是保存手指 1 的位置并丢弃该点附近的移动。结果确实并不完美,有时手指2 的移动会被小指1 的移动“污染”,因为尽管手指保持在屏幕上的位置,但听众会感觉到每一个最小的移动。
我该如何改进?
【问题讨论】:
标签: java android touch listener gesture