我有一些关于触摸事件屏蔽的小问题。我在这里和其他地方读过很多东西,但对部分内容仍然有些困惑。
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;
}