Il ACTION_MASK
viene utilizzato per separare l'azione effettiva e l'identificatore del puntatore (ad es., Il primo dito sfiorato, il secondo dito sfiorato, ecc.) I primi 8 bit del valore restituito in getAction() sono la parte di azione effettiva, quindi quando si bitwise-AND con il action mask (= 11111111 = 255 = 0xff), si rimane solo con l'azione e nessuna delle informazioni del puntatore.
In Android 1.5/API livello 3, non abbiamo avuto il supporto nella classe MotionEvent
per più puntatori (cioè multitouch). Per un singolo evento puntatore, i bit del puntatore non sono impostati. È possibile quindi basta confrontare l'evento con la costante azione desiderata per ottenere l'assegno per la particolare azione:
if ((event.getAction() == MotionEvent.ACTION_MOVE) {...}
Nel caso improbabile che questo non funziona, si può provare a definire il proprio maschera costante azione di essere 255 e bit a bit - E con l'azione come nelle versioni successive dell'API.
Sul docs per MotionEvent
(o addirittura su qualsiasi pagina di riferimento Android), è presente una casella di controllo per filtrare in base al livello API. Se si seleziona il livello API 3, è possibile visualizzare lo stato di tale classe al momento. Tutti i metodi e le costanti relativi ai diversi puntatori sono disattivati.
Grazie mille per il vostro tempo e la vostra risposta. Mi sto ancora chiedendo perché questa espressione si risolverebbe su false versioni Android più recenti. Questo * funziona * su qualsiasi dispositivo/livello da 3 a ora? Se sì, è a causa delle informazioni di destinazione/min_sdk che ho inserito nella creazione del progetto? – unR
L'espressione è sempre valida per singoli eventi di tocco del puntatore, anche per livelli API successivi. Per un singolo puntatore, gli altri bit (puntatore) non sono impostati, quindi non è necessario per la maschera. – antonyt
grazie mille. accettato – unR