¿Cómo funcionan las coordenadas de la pantalla de Android?


154

Estoy trabajando con Android Animationy he encontrado que el sistema de coordenadas de Android es bastante confuso, así que estoy aquí para hacer esta pregunta sobre cómo funcionan las coordenadas en Android. Estoy siguiendo esta imagen para mover una vista a otra, pero parece que no funciona:

imagen

Respuestas:


294

ingrese la descripción de la imagen aquí

Esta imagen presenta ambas orientaciones (Paisaje / Retrato)

Para obtener MaxX y MaxY, sigue leyendo.

Para las coordenadas de la pantalla del dispositivo Android, el siguiente concepto funcionará.

Display mdisp = getWindowManager().getDefaultDisplay();
Point mdispSize = new Point();
mdisp.getSize(mdispSize);
int maxX = mdispSize.x; 
int maxY = mdispSize.y;

EDITAR: - ** ** para dispositivos compatibles con el nivel de api de Android anterior a 13. Puede usar el siguiente código.

    Display mdisp = getWindowManager().getDefaultDisplay();
    int maxX= mdisp.getWidth();
    int maxY= mdisp.getHeight();

(x, y): -

1) (0,0) es la esquina superior izquierda.

2) (maxX, 0) es la esquina superior derecha

3) (0, maxY) es la esquina inferior izquierda

4) (maxX, maxY) es la esquina inferior derecha

aquí maxX y maxY son la altura y el ancho máximos de la pantalla en píxeles, que hemos recuperado en el código dado anteriormente.


Si tenemos el Viewcon layout_width="1" layout_height="1"¿significaría que la parte superior izquierda es (0,0) y la inferior derecha es (1, 1)? ¿No significa eso que Viewancho = 2 y altura = 2? Contradicción.
riwnodennyk

@AAnkit, ¿puede confirmarlo? Esto es válido para ambas orientaciones de pantalla (Vertical y Horizontal), el cambio de orientación de la pantalla afecta a (0,0) -> esquina superior izquierda. (maxX, 0) -> esquina superior derecha (0, maxY) -> esquina inferior izquierda (maxX, maxY) -> esquina inferior derecha
Qadir Hussain

Muchas gracias por la imagen. Realmente me salvó la vida.
Sharl Sherif

19

Para la API de Android nivel 13 y necesita usar esto:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int maxX = size.x; 
int maxY = size.y;

Entonces (0,0) es la esquina superior izquierda y (maxX, maxY) es la esquina inferior derecha de la pantalla.

El 'getWidth ()' para el tamaño de la pantalla está en desuso desde la API 13

Además getwidth () y getHeight () son métodos de android.view.View clase en android.So cuando su clase Java se extiende vista de clase que no hay gastos generales WindowManager.

          int maxX=getwidht();
          int maxY=getHeight();

Tan sencillo como eso.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.