Questa lezione descrive come attenuare la luminosità delle barre di sistema, ovvero dello stato e barre) su Android 4.0 (livello API 14) e versioni successive. Android non offre un modo integrato per attenuare la luminosità le barre di sistema delle versioni precedenti.
Quando utilizzi questo approccio, i contenuti non vengono ridimensionati, ma le icone nelle barre di sistema ritirarsi visivamente. Non appena l'utente tocca la barra di stato o l'area della barra di navigazione di sullo schermo, entrambe le barre diventano completamente visibili. Il vantaggio di questo approccio è che le barre sono ancora presenti ma i loro dettagli sono oscurati, quindi creando un'esperienza immersiva senza rinunciare a un facile accesso alle barre.
Attenua le barre di stato e di navigazione
Puoi attenuare le barre di stato e di navigazione utilizzando il
SYSTEM_UI_FLAG_LOW_PROFILE
, come segue:
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
Non appena l'utente tocca la barra di stato o di navigazione, il flag viene cancellato, annullando l'attenuazione delle barre. Una volta cancellato il flag, l'app deve essere reimpostata se vuoi attenuare di nuovo le barre.
La Figura 1 mostra un'immagine della galleria in cui la barra di navigazione è attenuata (tieni presente che l'app Galleria nasconde completamente la barra di stato; non la attenua). Nota che la barra di navigazione (destra lato dell'immagine) ha punti bianchi deboli che rappresentano i controlli di navigazione:
La Figura 2 mostra la stessa immagine della galleria, ma con le barre di sistema visualizzate:
Mostra barre di stato e di navigazione
Se vuoi cancellare in modo programmatico i flag impostati con
setSystemUiVisibility()
, puoi farlo
come segue:
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);