Esta lição descreve como escurecer as barras do sistema (ou seja, as barras de status e navegação) no Android 4.0 (nível 14 da API) e versões mais recentes. O Android não oferece uma maneira integrada de escurecer as barras do sistema em versões anteriores.
Quando você usa essa abordagem, o conteúdo não é redimensionado, mas os ícones nas barras do sistema recuam visualmente. Assim que o usuário toca na barra de status ou na área da barra de navegação da tela, as duas barras ficam totalmente visíveis. A vantagem dessa abordagem é que as barras ainda estão presentes, mas os detalhes delas são ocultados, criando uma experiência imersiva sem sacrificar o acesso fácil a elas.
Escurecer as barras de status e navegação
Você pode escurecer as barras de status e navegação usando a flag
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 fiquem não esmaecidas. Depois que a sinalização for apagada, seu app precisará redefini-la para escurecer as barras novamente.
A Figura 1 mostra uma imagem da galeria em que a barra de navegação está escurecida. O app Galeria oculta completamente a barra de status, sem escurecer. A barra de navegação (lado direito 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 limpar programaticamente as sinalizações definidas com setSystemUiVisibility()
, faça o seguinte:
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);