Przyciemnij paski systemu (wycofane)

Z tej lekcji dowiesz się, jak przyciemniać paski systemu (czyli stanu i pasków nawigacyjnych) na Androidzie 4.0 (poziom API 14) i nowszych. Android nie ma wbudowanego sposobu przyciemniania pasków systemowych we wcześniejszych wersjach.

W takim przypadku rozmiar treści się nie zmienia, ale ikony na paskach systemowych są uwidocznione. Gdy tylko użytkownik dotknie paska stanu lub obszaru paska nawigacyjnego na ekranie, oba paski stają się w pełni widoczne. Zaletą tego podejścia jest to, że słupki wciąż są widoczne, ale ich szczegóły są niewidoczne, dzięki czemu zapewnia to wciągające doświadczenie bez poświęcania łatwego dostępu do słupków.

Przyciemnij paski stanu i nawigacji

Możesz przyciemnić paski stanu i nawigacji za pomocą flagi SYSTEM_UI_FLAG_LOW_PROFILE w ten sposób:

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

Gdy tylko użytkownik dotknie paska stanu lub nawigacji, flaga zostanie wyczyszczona, co sprawi, że pasek zniknie. Po wyczyszczeniu flagi aplikacja musi ją zresetować, jeśli chcesz znowu przyciemnić paski.

Ilustracja 1 przedstawia zdjęcie z galerii, na którym pasek nawigacyjny jest przyciemniony (uwaga: aplikacja Galeria całkowicie zasłania pasek stanu – go nie przyciemnia). Zwróć uwagę, że na pasku nawigacyjnym (po prawej stronie obrazu) znajdują się białe kropki symbolizujące elementy sterujące nawigacji:

paski systemowe

Rysunek 1. Wyszarzone paski systemu.

Rysunek 2 przedstawia ten sam obraz galerii, ale z wyświetlonymi paskami systemowymi:

paski systemowe

Rysunek 2. Widoczne paski systemowe.

Pokaż paski stanu i nawigacji

Jeśli chcesz automatycznie usunąć flagi ustawione za pomocą setSystemUiVisibility(), możesz to zrobić w ten sposób:

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