我對觸摸事件的遮罩有一些小問題。我在這裏和其他地方閱讀了很多內容,但仍然對部分內容有些困惑。Android多點觸控和getActionMasked()
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;
}
很好的解釋! – George