Cómo atenuar las barras de sistema

En esta lección, se describe cómo atenuar las barras del sistema (es decir, las barras de estado y navegación) en Android 4.0 (nivel de API 14) y versiones posteriores. Android no proporciona una forma integrada de atenuar las barras del sistema en versiones anteriores.

Cuando usas este enfoque, el contenido no cambia de tamaño, pero los íconos en las barras del sistema se alejan visualmente. En cuanto el usuario toca el área de la barra de estado o de navegación de la pantalla, ambas barras se vuelven completamente visibles. La ventaja de este enfoque es que las barras siguen presentes, pero sus detalles están ocultos, lo que crea una experiencia envolvente sin sacrificar el fácil acceso a las barras.

Cómo atenuar las barras de estado y navegación

Puedes usar la marca SYSTEM_UI_FLAG_LOW_PROFILE para atenuar las barras de estado y navegación de la siguiente manera:

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

En cuanto el usuario toca la barra de estado o navegación, se borra la marca, lo que provoca que las barras no se atenúen. Después de borrar la marca, tu app debe restablecerla si quieres volver a atenuar las barras.

En la figura 1, se muestra una galería de imágenes en la que la barra de navegación está atenuada (ten en cuenta que la app de Galería oculta por completo la barra de estado; no la atenúa). Observa que la barra de navegación (lado derecho de la imagen) tiene puntos blancos tenues que representan los controles de navegación:

barras del sistema

Figura 1: Barras del sistema atenuadas

En la figura 2, se muestra la misma galería de imágenes, pero con las barras del sistema:

barras del sistema

Figura 2: Barras del sistema visibles

Cómo mostrar las barras de estado y navegación

Si quieres borrar de manera programática las marcas establecidas con setSystemUiVisibility(), puedes hacerlo de la siguiente manera:

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