2013-05-09 7 views
11

Jaka jest różnica między tymi dwoma podejściami poniżej?Różnica w używaniu metody MotionEvent.getAction()

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

int action2 = event.getAction(); 
+0

Uwaga: 'zdarzenia. getAction() i MotionEvent.ACTION_MASK' są takie same, jak 'getActionMasked()'. Zobacz również [to pytanie] (https://stackoverflow.com/q/17384983/3681880). – Suragch

Odpowiedz

13

ACTION_MASK służy do oddzielania właściwe działanie i wskaźnik identyfikator (na przykład pierwszy palec dotknięciu drugi palec dotyku itp) pierwszy 8 bitów wartości zwróconej w getAction() jest rzeczywista część działania i więc gdy bitowe - I to z action mask (= 11111111 = 255 = 0xff), pozostaje tylko akcja i żadna z informacji wskaźnika.

Należy pamiętać tutaj, że & służy jako arytmetycznego operatora (mnożenie), a nie operator logiczny (jeden & jest całkowicie poprawny operator logiczny w Javie, jak &&) .`

+1

Ok, ale nie wiem jaki jest punkt maskowania, ponieważ mogę porównać bezpośrednio action2 z MotionEvent.ACTION_MOVE – iCould7

+2

Nie musisz go używać, jeśli w większości przypadków nie obsługujesz multitouch. –

Powiązane problemy