タッチ イベントのマスキングに関していくつか質問があります。ここや他の場所で多くのことを読みましたが、まだ部品について少し混乱しています.
1) とevent.getActionMasked()
同じevent.getAction() & MotionEvent.ACTION_MASK
(Samsung S2 および HTC Desire にあるようです)
2) 上記の 2 つのコマンドはすべての情報を提供し、それ以上の情報を提供しますevent.getAction()
か、それとも異なりますか。
3)私は、タッチされている場所とどのpointerIdを使用しているか、またはポインターが使用されていないかどうかを簡単に示すコードを作成しました(現時点では2回のタッチに対してのみ作成されています)。上記のデバイスでは正しく動作しているように見えますが、完全に正しく行わないと、一部のデバイスが非常に異なる動作をする可能性があることを私は知っています。したがって、以下が正しく、すべてのデバイスで動作するかどうか疑問に思っています。
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;
}