2012-11-30 22 views

risposta

10

Se si desidera la dimensione della finestra della propria app, è sufficiente chiamare yourview.getHeight() e yourview.getWidth(); Ma il punto di vista deve essere disegnato affinché funzioni.

Se si desidera ottenere l'altezza prima è disegnato si può fare questo:

https://stackoverflow.com/a/10134260/1851478

Ci sono un sacco di diversi casi di misura dello schermo/vista, quindi se si potrebbe essere più preciso circa "dimensione effettiva della finestra delle applicazioni", questa è la tua app? O l'app della schermata Home ?, qualche altra app?

Se si desidera lo spazio utilizzabile meno le decorazioni (barra di stato/pulsante virtuale), è possibile attaccarlo anche al contrario, ad esempio misurare le dimensioni effettive dello schermo (i metodi variano a seconda dell'API) e quindi sottrarre l'altezza del barra di stato.

Esempio altezza del display:

((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight(); 

Stato altezza della barra:

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 

O

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

molti modi diversi per fare questo.

Certamente bisogno di maggiori informazioni da voi anche se per dare una risposta più precisa.

+0

Grazie, sue le mie dimensioni di attività che sto cercando. La larghezza/altezza della vista genitore lo farebbe per me ma, come dici tu, richiede prima la vista. –

+0

Cool, beh, il link che ho fornito dovrebbe farlo per te, ma puoi ignorare la parte sul nascondimento dopo la misurazione. In alternativa, basta chiamare .getHeight() e .getWidth() dopo aver disegnato la vista (ad esempio in un'attività che hai già chiamato setContentView (R.layout.yourview); – logray

+0

"Se vuoi ottenere l'altezza prima che sia disegnata puoi fai questo: "- Poi fornisci un link ad un codice che può solo determinare la dimensione DOPO che la vista è stata gonfiata – AndroidDev

5

Questo è anche abbastanza facile:

Rect windowRect = new Rect(); 

yourView.getWindowVisibleDisplayFrame(windowRect); 

int hWindow = windowRect.bottom - windowRect.top; 
int wWindow = windowRect.right - windowRect.left; 
Problemi correlati