2013-05-09 7 views
11

Was ist der Unterschied zwischen den beiden folgenden Ansätzen?Der Unterschied bei der Verwendung von MotionEvent.getAction() Methode

int action1 = event.getAction() & MotionEvent.ACTION_MASK; 

int action2 = event.getAction(); 
+0

Hinweis: 'Veranstaltung. getAction() & MotionEvent.ACTION_MASK' ist das gleiche wie 'getActionMasked()'. Siehe auch [diese Frage] (https://stackoverflow.com/q/17384983/3681880). – Suragch

Antwort

13

Die ACTION_MASK wird verwendet, um die eigentliche Aktion und den Zeiger Identifikator zu trennen (zum Beispiel der erste Finger berührt wird, der zweite Finger berührt, etc.) Die ersten 8 Bits des Werts zurück in getAction() ist die eigentliche Aktion seits und also wenn du bitweise-UND es mit der action mask (= 11111111 = 255 = 0xff) schreibst, bleibt dir nur die Aktion und keine Zeigerinformation übrig.

Beachten Sie hier, dass & als arithmetischen Operator verwendet wird (bitweise) und nicht ein logischer Operator (Einzel & ein absolut gültiger logischer Operator in Java ist, wie &&) .`

+1

Ok, aber ich weiß nicht, was der Punkt der Maskierung ist, da ich action2 direkt mit MotionEvent.ACTION_MOVE vergleichen kann – iCould7

+2

Sie müssen es nicht verwenden, wenn Sie Multitouch in den meisten Fällen nicht unterstützen. –