Ben dokunmatik olayların maskeleme ile yapmak için bir bazı küçük sorum var. Burada ve başka yerlerde pek çok şey okudum ama yine de parçalarla biraz karıştım.Android çok noktalı dokunma ve getActionMasked()
1) onlar
2) Yukarıdaki iki komutlar fazla olduğunu event.getAction()
yalnız olacak tüm bilgi ve verecek Samsung S2 ve HTC Desire) gibi görünen (event.getAction() & MotionEvent.ACTION_MASK
aynı event.getActionMasked()
mi, yoksa farklı .
3) ediliyor dokunma ve hangi pointerId veya işaretçi yalnızca şu anda iki dokunuşlar için yazılmış simgeler (değilse) diyor basit bir kod peice yazdım. Yukarıda belirtilen cihazlarda düzgün çalışıyor gibi görünüyor, ancak bazı cihazların kesinlikle doğru yapılmadığı takdirde çok farklı hareket edebileceğini biliyorum. Bu yüzden aşağıdakilerin doğru olup olmadığını merak ediyorum ve tüm cihazlarda davranacağım.
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;
}
Mükemmel açıklama! – George