¿Cómo sé si un MotionEvent es relativo o absoluto?

Estoy implementando OnTouchListener y estoy recibiendo objetos MotionEvent. Algunos eventos ACTION_MOVE informan coordenadas absolutas X / Y, mientras que algunos reportan coordenadas relativas.

¿Cómo puedo pedir a un MotionEvent qué tipo de coordenadas representa actualmente?

Es posible que desee utilizar estos para las coordenadas absolutas (absoluta, en relación con la pantalla del dispositivo):

MotionEvent.getRawX ()

MotionEvent.getRawY ()

Los otros métodos, getX() y getY() , deberían devolverle las coordenadas, en relación con la Vista, que las envió.

Esta es una limitación de la plataforma Android.

MotionEvent a veces devuelve coordenadas absolutas de X e Y con relación a la vista ya veces coordenadas relativas al evento de movimiento anterior.

Un evento enviado como ACTION_DOWN siempre será absoluto, todos los demás eventos variarán. No hay forma de pedir al MotionEvent el tipo actual de coordenadas.

Esto significa que en la práctica getX() y getY() son inútiles para muchos casos de uso, y debe basar su lógica de aplicación en getRawX() y getRawY() que garantiza devolver coordenadas absolutas, en relación con la pantalla del dispositivo.

Al usar el MapView, pude obtener las coordenadas relativas de X e Y restando el View.getLeft () y View.getTop () de la vista de contenido de la ventana (Window.ID_ANDROID_CONTENT) de MotionEvent.getRawX () y MotionEvent. GetRawY (), respectivamente.

La solución se discute aquí:

http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html

Esto debería funcionar para determinar coordenadas relativas X e Y en la vista de disposición principal.

  • Cómo deshabilitar el evento táctil android
  • Android SimpleOnGestureListener.onFling obtener un objeto nulo MotionEvent
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.