2012-08-06 28 views
15

Tengo algunos problemas para obtener el real (x, y) de mi pantalla al manejar los eventos táctiles de un elemento de vista.¿Cómo obtener los cordinates de pantalla correspondientes a toda la pantalla y no a la vista tocada?

tengo esto:

enter image description here

Cuando toco el elemento Ver, me da coordenadas con el origen se encuentra en la esquina superior izquierda, y si me deslice el dedo hacia fuera de la vista, se me da coordenadas negativas (al deslizar hacia arriba o hacia la izquierda). enter image description here enter image description here

me gustaría obtener la ubicación Vista de la pantalla, para agregarlo a la (x, y) las coordenadas que me sale, por lo que el resultado final es que el (0,0) está en la esquina superior izquierda de toda la pantalla. enter image description here

También necesito el tamaño total de la pantalla, de modo que sé cuando el dedo se encuentra en la esquina inferior derecha.

¿Cómo puedo lograrlo?

Gracias.

Respuesta

16

clase MotionEvent tiene getX() y getY() métodos que devuelven las coordenadas relación a la vista, como lo han descubierto.

Sin embargo, también tiene getRawX() y getRawY() métodos, que de acuerdo con los documentos dicen:

Devuelve el original X crudo (o Y) de coordenadas de este evento. Para eventos táctiles en la pantalla, esta es la ubicación original del evento en la pantalla, antes de que se haya ajustado para la ventana y las vistas que lo contienen.

Parece que esto es lo que buscas.

+0

Esta es la manera más fácil, gracias por la respuesta. – Alex

6

Intente usar esto después de la vista cargada en la pantalla.

int[] location = new int[2]; 
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]); 
Log.v(Common.TAG,"top: "+ location[1]); 
Cuestiones relacionadas