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. Android non offre un modo integrato per attenuare le barre di sistema nelle versioni precedenti.
Quando utilizzi questo approccio, i contenuti non vengono ridimensionati, ma le icone nelle barre di sistema si ritirano visivamente. 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 barre sono ancora presenti, ma i dettagli sono oscurati, creando così un'esperienza immersiva senza sacrificare l'accesso semplice alle barre.
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 indicato di seguito:
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, l'indicatore viene cancellato e le barre non vengono oscurate. Una volta cancellato il flag, l'app deve reimpostarlo se vuoi attenuare di nuovo le barre.
La Figura 1 mostra un'immagine di una galleria in cui la barra di navigazione è oscurata (tieni presente che l'app Galleria nasconde completamente la barra di stato, ma non la oscura). Sulla barra di navigazione (lato destro dell'immagine) sono presenti dei sottili 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 su setSystemUiVisibility()
, procedi nel seguente modo:
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);