我正在使用Android SurfaceView
并监听多点触控事件。我能够检测到多个触摸,但似乎ACTION_POINTER_UP
触摸事件没有被触发。这是我的代码的快速剪辑。
public class GameView extends SurfaceView implements Runnable {
...
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
Log.i("pointer count", Integer.toString(motionEvent.getPointerCount()));
return true;
}
...
}
当我在屏幕上放置2个手指时,指针计数注销为2.如果我移除了我的一个手指,指针计数注销不是1并且保持在2.如果我移动手指那么它只会变为1仍然在屏幕上。为什么这个以及我如何修复它?谢谢!
修改
我的One Plus One和我的朋友三星Galaxy Note 2出现了这个问题。有趣的是,当我把它放在我的三星Galaxy s4上时,问题没有发生。
答案 0 :(得分:1)
不要使用getAction() == MotionEvent.ACTION_POINTER_UP
,因为操作也会包含指针索引。
getActionMasked()
将删除此信息,并可用于比较。
请参阅http://developer.android.com/reference/android/view/MotionEvent.html#getActionMasked()