Przyciemnij paski systemu (wycofane)

.

Z tego wykładu dowiesz się, jak przyciemnić paski systemowe (czyli stanu i nawigacji paski) na Androidzie 4.0 (poziom interfejsu API 14) i nowszym. Android nie ma wbudowanego sposobu przyciemniania pasków systemowych w starszych wersjach.

W przypadku tej metody rozmiar zawartości nie jest zmieniany, a ikony na paskach systemowych wizualnie utracą. Gdy tylko użytkownik dotknie paska stanu lub paska nawigacyjnego na ekranie, oba paski stają się w pełni widoczne. Zaletą podejście jest takie, że słupki wciąż są obecne, ale ich szczegóły są zasłonięte, co zapewnia imponujące wrażenia bez konieczności łatwego dostępu do barów.

Przyciemnij paski stanu i nawigacji

Możesz przyciemnić paski stanu i nawigacji za pomocą SYSTEM_UI_FLAG_LOW_PROFILE w następujący 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 paska nawigacyjnego, flaga zostanie wyczyszczona, przez co słupki są zniekształcone. Po usunięciu flagi musisz zresetować aplikację. go, jeśli zechcemy ponownie przyciemnić paski.

Rysunek 1 przedstawia obraz galerii, w którym pasek nawigacyjny jest przyciemniony (pamiętaj, że aplikacja Galeria całkowicie ukrywa pasek stanu. nie zostanie przyciemniona). Zwróć uwagę, że pasek nawigacyjny (po prawej prawej strony obrazu) zawiera słabe białe kropki symbolizujące elementy sterujące nawigacji:

paski systemowe

Rysunek 1. Przyciemnione paski systemowe.

Rysunek 2 przedstawia ten sam obraz galerii z wyświetlanymi paskami systemowymi:

paski systemowe

Rysunek 2. Widoczne paski systemowe.

Wyświetlenie pasków stanu i nawigacji

Jeśli chcesz automatycznie usuwać flagi ustawione za pomocą setSystemUiVisibility(), możesz to zrobić w następujący 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);