文档对此有如下说明:
引导手势的动作事件是 ACTION_DOWN,它提供了第一个指针按下的位置。每当有额外的指针按下或抬起时,框架都会生成带有相应的 ACTION_POINTER_DOWN 或 ACTION_POINTER_UP 的动作事件。
因此,我在我的活动中重写了 onTouchEvent 函数:
很遗憾,第二个if语句从未被执行。该活动包含2个视图和2个OnTouchListener,我知道只有在活动的视图不消耗事件时才会调用onTouchEvent,所以我尝试在侦听器中返回false,这样我就可以仅识别第一个手指触摸,但这会防止侦听器接收ACTION_UP事件,并且不允许我识别第二个手指触摸。我还尝试在侦听器中返回true,但在手动调用onTouchEvent函数后,这也只能让我识别第一个手指触摸。我的代码出了什么问题?
引导手势的动作事件是 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函数后,这也只能让我识别第一个手指触摸。我的代码出了什么问题?