Ich habe ein paar kleine Fragen mit der Maskierung von Berührungsereignissen zu tun. Ich habe viele Dinge hier und anderswo gelesen, bin aber immer noch ein wenig verwirrt mit Teilen.Android Multitouch und getActionMasked()
1) Ist event.getActionMasked()
gleiche wie event.getAction() & MotionEvent.ACTION_MASK
(sie auf Samsung S2 und HTC Desire zu sein scheinen)
2) Werden die beiden oben genannten Befehle geben alle Informationen, und mehr als das event.getAction()
allein, oder ist es anders .
3) Ich habe ein Stück Code geschrieben, der einfach sagt, wo und mit welcher pointerId die Berührung ist, oder ob der Zeiger nicht benutzt wird (nur für zwei Berührungen im Moment geschrieben). Es scheint auf den oben genannten Geräten korrekt zu funktionieren, aber ich weiß, wie manche Geräte sehr unterschiedlich funktionieren können, wenn sie nicht absolut korrekt ausgeführt werden. Ich frage mich daher, ob das Folgende stimmt und sich auf allen Geräten verhält.
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;
}
Ausgezeichnete Erklärung! – George