Participe do evento ⁠#Android11: apresentação de lançamento da versão Beta no dia 3 de junho.

Escurecer as barras do sistema

Esta lição descreve como escurecer as barras do sistema (isto é, as barras de status e navegação) no Android 4.0 (API de nível 14) e versões mais recentes. O Android não fornece uma maneira integrada de escurecer as barras do sistema nas 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 área da tela da barra de status ou da barra de navegação, as duas ficam totalmente visíveis. A vantagem dessa abordagem é que as barras ainda estão presentes, mas os detalhes delas ficam obscurecidos, criando uma experiência imersiva sem sacrificar a facilidade de acesso.

Escurecer as barras de status e navegação

Você pode escurecer as barras de status e de navegação usando a sinalizaçã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 navegação, a sinalização é apagada, fazendo com que as barras fiquem intactas. Depois que a sinalização for apagada, seu app precisará redefini-la se você 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, não a escurece). A barra de navegação (lado direito 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ê quer apagar programaticamente as sinalizações configuradas 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);