मेरे पास टच इवेंट्स के मास्किंग के साथ कुछ छोटे प्रश्न हैं। मैंने यहां और कहीं और कई चीजें पढ़ी हैं लेकिन अभी भी कुछ हिस्सों में उलझन में हूं।एंड्रॉइड मल्टीटाउच और getActionMasked()
1) event.getActionMasked()
event.getAction() & MotionEvent.ACTION_MASK
के रूप में ही है (वे
2) दो ऊपर बताए गए आदेशों सभी जानकारी और कि अधिक से अधिक event.getAction()
अकेला होगा देंगे सैमसंग एस 2 और एचटीसी डिजायर) पर दिखाई देते हैं, या यह अलग है ।
3) मैंने कोड का एक टुकड़ा लिखा है जो सरल कहता है कि कहां स्पर्श किया जा रहा है और किस पॉइंटर आईडी के साथ, या यदि सूचक उपयोग में नहीं है (केवल इस समय दो स्पर्शों के लिए लिखा गया है)। ऐसा लगता है कि ऊपर वर्णित उपकरणों पर सही ढंग से काम करना प्रतीत होता है, हालांकि मुझे पता है कि कुछ डिवाइस बिल्कुल सही तरीके से कैसे कार्य कर सकते हैं यदि बिल्कुल सही नहीं किया जाता है। इसलिए मैं सोच रहा हूं कि निम्नलिखित सही है और सभी उपकरणों पर व्यवहार करेगा।
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