Android onTouch多点触控不接收所有触控事件

时间:2014-08-18 07:33:13

标签: android surfaceview multi-touch

我正在使用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上时,问题没有发生。

1 个答案:

答案 0 :(得分:1)

不要使用getAction() == MotionEvent.ACTION_POINTER_UP,因为操作也会包含指针索引。

getActionMasked()将删除此信息,并可用于比较。

请参阅http://developer.android.com/reference/android/view/MotionEvent.html#getActionMasked()