Escurecer as barras do sistema (descontinuado)

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:

barras do sistema

Figura 1. Barras do sistema escurecidas.

A Figura 2 mostra a mesma imagem da galeria, mas com as barras do sistema exibidas:

barras do sistema

Figura 2. Barras do sistema visíveis.

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);