android - resueltos - ¿Cómo puedo saber si un MotionEvent es relativo o absoluto?
manual de programacion android pdf (3)
Al usar MapView, pude obtener las coordenadas X e Y relativas al restar 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 las coordenadas X e Y relativas en la vista de diseño principal.
Estoy implementando OnTouchListener
y estoy recibiendo objetos MotionEvent. Algunos eventos ACTION_MOVE
informan coordenadas X / Y absolutas, mientras que algunos informan coordenadas relativas.
¿Cómo puedo preguntarle a MotionEvent
qué tipo de coordenadas representa actualmente?
Es posible que desee utilizar estos para las coordenadas absolutas (absoluto, con respecto a la pantalla del dispositivo):
Los otros métodos, getX()
y getY()
, deben devolverle las coordenadas relativas a la View
que las envió.
Esta es una limitación en la plataforma de Android.
MotionEvent
a veces devolverá las coordenadas absolutas X e Y con respecto a la vista, y en ocasiones las 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 solicitar al MotionEvent
el tipo de coordenadas actual.
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, relativas a la pantalla del dispositivo.