¿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?
- Android - ImageView en el clic
- ¿Cómo deslizar la imagen con el toque de dedo en Android?
- Evento de Android Touch en la pantalla
- Android: mover una vista en touch move (ACTION_MOVE)
- Android: forma de botón personalizada
- ¿Qué se llama un toque de salto en la documentación de Android?
- Ocultar el botón y mostrar de nuevo en el tacto
- Android Touch Evento que determina la duración
- Inyectar eventos de pantalla táctil, Android 5.0, dev / input / eventX
- Por qué siempre obtengo ACTION_DOWN de onTouchEvent
- No mostrar MotionEvent.ACTION_UP o MotionEvent.ACTION_CANCEL
- Volver a dibujar durante MotionEvent.ACTION_MOVE en onTouchEvent ()
- Desplazamiento suave con inercia y resistencia de los bordes / snapback
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.