motionevents action_down android touch motionevent

action_down - En Android, ¿cuál es la diferencia entre getAction() y getActionMasked() en MotionEvent?



motionevents (2)

Estoy confundido por los dos métodos en Android. Parece que ambos métodos le dicen qué tipo de evento es, es decir, si es un evento hacia abajo o hacia arriba.

¿Cuándo voy a usar cuál?

public void onTouchEvent(MotionEvent e)

No cite la documentación, por favor, porque la leí, y no veo ningún parámetro que pueda proporcionar a ninguno de los métodos para obtener algo diferente.

public final int getAction ()

y

public final int getActionMasked()


Sí, ambos devuelven la acción (arriba / abajo, etc.), pero getAction puede devolver la acción con información de puntero, en cuyo caso los eventos pueden ser un poco diferentes. getActionMasked siempre devolverá acciones "simples" con la información del puntero "Enmascarado" (¿lo obtendrás?) luego llamarías a getPointerIndex en el mismo evento para obtener el índice del puntero. Tenga en cuenta que lo más frecuente es que lo vea en dispositivos multitáctiles con múltiples puntos de contacto (punteros). El índice de puntero es esencialmente una forma de hacer coincidir los eventos con los puntos de contacto para que pueda distinguirlos.


getAction () devuelve una identificación de puntero y un evento (es decir, arriba, abajo, mover) información.

getActionMasked () devuelve solo un evento (es decir, arriba, abajo, mover) información. Otra información está enmascarada.

Por ejemplo:

getAction () devuelve 0x0105 .
getActionMasked () devolverá 0x0005 , que es 0x0105 && ACTION_MASK .

  1. El valor de ACTION_MASK es 0xFF. Enmascara las siguientes acciones.
    • ACTION_DOWN 0, UP 1, MOVE 2
    • ACTION_POINTER_DOWN 5, UP 6
  2. El valor de ACTION_POINTER_ID_MASK es 0xFF00. Enmascaró la ID del puntero de las siguientes constantes en desuso.
    • ACTION_POINTER_1_DOWN 0x0005
    • ACTION_POINTER_2_DOWN 0x0105
    • ACTION_POINTER_3_DOWN 0x0205
    • ...