Esta lição descreve como escurecer as barras do sistema (ou seja, o status e a navegação barras) no Android 4.0 (nível 14 da API) e versões mais recentes. O Android não fornece uma maneira integrada de escurecer o barras de sistema nas versões anteriores.
Com essa abordagem, o conteúdo não é redimensionado, mas os ícones nas barras de sistema recuar visualmente. Assim que o usuário tocar na barra de status ou na área da barra de navegação do na tela, as duas barras ficam totalmente visíveis. A vantagem dessa é que as barras ainda estão presentes, mas seus detalhes ficam ocultos, o que criando uma experiência imersiva sem abrir mão do acesso fácil aos bares.
Escurecer as barras de status e navegação
Você pode escurecer as barras de status e de navegação usando o
SYSTEM_UI_FLAG_LOW_PROFILE
, da seguinte maneira:
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);
Assim que o usuário toca na barra de status ou de navegação, a sinalização é apagada, fazendo com que as barras não esmaeçam. Depois que a sinalização for removida, o app precisará ser redefinido se quiser escurecer as barras novamente.
A Figura 1 mostra uma imagem da galeria em que a barra de navegação está escurecida. Observe que o app Galeria oculta completamente a barra de status; ele não vai esmaecer). Observe que a barra de navegação (à direita lado da imagem) tem pontos brancos fracos para representar os controles de navegação:
A Figura 2 mostra a mesma imagem da galeria, mas com as barras do sistema exibidas:
Revelar as barras de status e navegação
Se você quiser apagar programaticamente as sinalizações definidas com
setSystemUiVisibility()
, você pode fazer isso
da seguinte forma:
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);