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

时间:2012-07-05 18:08:59

标签: java android events 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() );
    }

}

不幸的是,第二个if永远不会输入。该活动包含2个视图,其中包含2个 OnTouchListener ,我知道只有当活动视图不消耗该事件时才会调用 onTouchEvent ,因此我尝试在听众,并且以这种方式我只能识别第一次手指触摸但这避免了听众接收ACTION_UP事件并且不允许我识别第二次手指触摸。我也试图在监听器中返回true,但是在手动调用onTouchEvent函数之后,这也让我只能识别第一个手指触摸。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:16)

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

switch (motionaction & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
}

此代码应该能够检查ACTION_POINTER_DOWN。

祝你好运&告诉我们会发生什么。

Tommy Kwee