私はタッチイベントのマスキングに関連するいくつかの小さな質問があります。私はここや他の場所で多くのことを読んだことがありますが、まだ少し混乱しています。AndroidマルチタッチとgetActionMasked()
1)event.getAction() & MotionEvent.ACTION_MASK
と同じevent.getActionMasked()
(彼らはサムスンS2とHTC欲望上にあるように見える)
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;
}
優秀な説明! – George