文档对此进行了说明:
手势以带有 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 ,因此我尝试在侦听器中返回 false ,这样我只能识别第一根手指触摸但是这避免了侦听器接收 ACTION_UP 事件并且不允许我识别第二个手指触摸。我也尝试在侦听器中返回 true,但是在手动调用 onTouchEvent 函数之后,但这也让我也只能识别第一个手指触摸。
我的代码有什么问题?