2012-07-14 23 views
111

Sto lavorando con Android Animation e ho trovato che il sistema di coordinate Android è abbastanza confuso quindi sono qui per porre questa domanda su come funzionano le coordinate in Android. Sto seguendo questa immagine per lo spostamento di una vista all'altra, ma sembra che non funziona:Come funzionano le coordinate dello schermo Android?

image

risposta

219

enter image description here

questa immagine Presente sia l'orientamento (orizzontale/verticale)

Per ottenere MaxX e MaxY, continua a leggere.

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

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

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

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

(x, y): -

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

2) (maxX, 0) è alto a destra angolo

3) (0, Maxy) è basso a sinistra

4) (maxX, Maxy) è inferiore destra corner

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

+2

Questo metodo è thr dal livello di API 1 ... – AAnkit

+0

Se abbiamo la 'View' con layout_width = "1" layout_height' = "1" 'significherebbe che in alto a sinistra è (0,0) e in basso a destra è (1, 1)? Non significherebbe che 'View''s width = 2 e height = 2? Contraddizione. – riwnodennyk

+0

@AAnnkit per favore, è valido per entrambi gli orientamenti dello schermo (Verticale e Orizzontale), il cambiamento dell'orientamento dello schermo influisce su (0,0) -> 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 –

16

Per livello di API Android 13 e avete bisogno di usare questo:

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

Poi (0,0) è nell'angolo in alto a sinistra e (maxX, Maxy) è nell'angolo in basso a destra dello schermo.

Il 'getWidth()' per la dimensione dello schermo è deprecato dal API 13

Problemi correlati