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();
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();
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 &&
) .`
Ok, aber ich weiß nicht, was der Punkt der Maskierung ist, da ich action2 direkt mit MotionEvent.ACTION_MOVE vergleichen kann – iCould7
Sie müssen es nicht verwenden, wenn Sie Multitouch in den meisten Fällen nicht unterstützen. –
Hinweis: 'Veranstaltung. getAction() & MotionEvent.ACTION_MASK' ist das gleiche wie 'getActionMasked()'. Siehe auch [diese Frage] (https://stackoverflow.com/q/17384983/3681880). – Suragch