Android - 如何处理两个手指触摸

Bem*_*efe 6 java events android multi-touch

文档说明了这一点:

手势以ACTION_DOWN的动作事件开始,该动作事件提供第一个指针向下的位置.当每个附加指针向下或向上时,框架将相应地生成具有ACTION_POINTER_DOWN或ACTION_POINTER_UP的运动事件.

所以我在我的活动中完成了onTouchEvent函数的覆盖:

@Override
public boolean onTouchEvent(MotionEvent MEvent) 
{

    motionaction = MEvent.getAction();

    if(motionaction == MotionEvent.ACTION_DOWN)
    {
        System.out.println("DEBUG MESSAGE POINTER1 " + MEvent.getActionIndex() );
    }

    if(motionaction == MotionEvent.ACTION_POINTER_DOWN)
    {
        System.out.println("DEBUG MESSAGE POINTER2 "  + MEvent.getActionIndex() );
    }

}
Run Code Online (Sandbox Code Playgroud)

不幸的是,永远不会输入第二个if.该活动包含2个视图和2个OnTouchListener,我知道只有当活动的视图不消耗事件时才调用onTouchEvent所以我试图在监听器中返回false,这样我只能识别第一次手指触摸但是这可以避免听众收到ACTION_UP事件,也不允许我识别第二次手指触摸.我也试图在监听器中返回true,但是在手动调用onTouchEvent函数之后,这也让我只能识别第一个手指触摸.

我的代码有什么问题?

The*_*oid 16

我相信你的代码缺少掩码操作,如:

switch (motionaction & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
}
Run Code Online (Sandbox Code Playgroud)

此代码应该能够检查ACTION_POINTER_DOWN.

祝你好运并告诉我们会发生什么.

汤米克威