Come funzionano le coordinate dello schermo Android?


154

Sto lavorando con Android Animatione ho trovato il sistema di coordinate Android piuttosto confuso, quindi sono qui per porre questa domanda su come funzionano le coordinate su Android. Sto seguendo questa immagine per spostare una vista all'altra ma sembra che non funzioni:

Immagine

Risposte:


294

inserisci qui la descrizione dell'immagine

Questa immagine presenta entrambi gli orientamenti (orizzontale / verticale)

Per ottenere MaxX e MaxY, continua a leggere.

Per le coordinate dello schermo del dispositivo Android, il concetto seguente funzionerà.

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

EDIT: - ** ** per dispositivi che supportano il livello di API Android più vecchio di 13. Può usare il codice qui sotto.

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

(x, y): -

1) (0,0) è l'angolo in alto a sinistra.

2) (maxX, 0) è l'angolo in alto a destra

3) (0, maxY) è l'angolo in basso a sinistra

4) (maxX, maxY) è l'angolo in basso a destra

qui maxX e maxY sono l'altezza e la larghezza massime dello schermo in pixel, che abbiamo recuperato nel codice sopra indicato.


Se abbiamo il Viewcon layout_width="1" layout_height="1"significherebbe che in alto a sinistra è (0,0) e in basso a destra è (1, 1)? Ciò non significherebbe che Viewla larghezza = 2 e l'altezza = 2? Contraddizione.
riwnodennyk

@Ankit, per favore, si può dire, questo è valido per entrambi gli orientamenti dello schermo (verticale e orizzontale), la modifica dell'orientamento dello schermo influisce su (0,0) -> nell'angolo in alto a sinistra. (maxX, 0) -> angolo in alto a destra (0, maxY) -> angolo in basso a sinistra (maxX, maxY) -> angolo in basso a destra
Qadir Hussain,

Grazie mille per l'immagine. mi ha davvero salvato la vita.
Sharl Sherif,

19

Per l'API Android livello 13 e devi usare questo:

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

Quindi (0,0) è l'angolo in alto a sinistra e (maxX, maxY) è l'angolo in basso a destra dello schermo.

'GetWidth ()' per le dimensioni dello schermo è obsoleto dall'API 13

Inoltre getWidth () e getHeight () sono metodi di android.view.View classe nel android.So quando la classe Java estende View classe non ci sono spese generali windowmanager.

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

così semplice.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.