Questa lezione descrive come attenuare le barre di sistema (ovvero lo stato e le barre di navigazione) su Android 4.0 (livello API 14) e versioni successive. Nelle versioni precedenti, Android non offre un modo integrato per attenuare le barre di sistema.
Con questo approccio, i contenuti non vengono ridimensionati, ma le icone nelle barre di sistema visivamente si ritirano. Non appena l'utente tocca la barra di stato o l'area della barra di navigazione dello schermo, entrambe le barre diventano completamente visibili. Il vantaggio di questo approccio è che le sbarre sono comunque presenti, ma i loro dettagli sono oscurati, creando così un'esperienza immersiva senza sacrificare il facile accesso alle sbarre.
Attenuazione delle barre di stato e di navigazione
Puoi attenuare la luminosità delle barre di stato e di navigazione utilizzando il flag 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 e le barre non sono più attenuate. Una volta cancellato il flag, l'app dovrà reimpostarlo se vuoi attenuare di nuovo le barre.
La Figura 1 mostra un'immagine della galleria in cui la barra di navigazione è oscurata (tieni presente che l'app Galleria nasconde completamente la barra di stato, non la attenua). Nota che sulla barra di navigazione (lato destro dell'immagine) sono presenti lievi puntini bianchi che rappresentano i controlli di navigazione:
La Figura 2 mostra la stessa immagine della galleria, ma con le barre di sistema visualizzate:
Visualizzazione delle 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);