我有一些关于触摸事件掩码的小问题。我已经在这里和其他地方阅读了许多信息,但仍然对部分内容感到有些困惑。
1)event.getActionMasked()
是否与 event.getAction() & MotionEvent.ACTION_MASK
相同(它们似乎在三星S2和HTC Desire上是相同的)。
2)上述两个命令是否会提供所有信息以及比仅使用event.getAction()
更多的信息,还是不同的。
3)我编写了一段代码,它简单地指出正在触摸哪个位置以及使用哪个pointerId,或者如果该指针未被使用(目前仅编写了两个触摸)。它在上述设备上似乎可以正确工作,但我知道如果不完全正确,某些设备可能会表现出非常不同的行为。因此,我想知道以下内容是否正确并且在所有设备上都能正常运行。
boolean pointer0down=false, pointer1down=false;
String st="", str0 ="", str1 ="";
public boolean onTouchEvent( MotionEvent event )
{
if (event.getActionMasked()==MotionEvent.ACTION_UP
||event.getActionMasked()==MotionEvent.ACTION_POINTER_UP
||event.getActionMasked()==MotionEvent.ACTION_CANCEL)
{
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==0)
pointer0down=false;
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==1)
pointer1down=false;
}
if (event.getActionMasked()==MotionEvent.ACTION_DOWN
||event.getActionMasked()==MotionEvent.ACTION_POINTER_DOWN)
{
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==0)
pointer0down=true;
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==1)
pointer1down=true;
}
if (pointer0down)
str0="\tx: " + event.getX(0) + "\ty: "+event.getY(0);
else
str0="\tNot down";
if (pointer1down )
str1="\tx: " + event.getX(1) + "\ty: "+event.getY(1);
else
str1="\tNot down";
st="pointer0:"+str0+"\npointer1:"+str1;
return true;
}