In Android, come posso ottenere le dimensioni della finestra dell'app? NON sto cercando le dimensioni dello schermo fisico, ma le dimensioni effettive della finestra delle applicazioni sullo schermo. Per esempio. generalmente ciò che rimane dopo aver portato via la barra di notifica, i pulsanti soft touch, ecc.Come posso ottenere la dimensione della finestra dell'applicazione Android e non le dimensioni dello schermo fisico?
risposta
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.
Questo è anche abbastanza facile:
Rect windowRect = new Rect();
yourView.getWindowVisibleDisplayFrame(windowRect);
int hWindow = windowRect.bottom - windowRect.top;
int wWindow = windowRect.right - windowRect.left;
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. –
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
"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