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:
Rysunek 2 przedstawia ten sam obraz galerii z wyświetlanymi paskami systemowymi:
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);