Ta lekcja opisuje, jak ukryć pasek stanu w różnych wersjach systemu Android. Ukrycie paska stanu (i opcjonalnie paska nawigacji) pozwala zawartości wykorzystać więcej miejsca na wyświetlaczu, zapewniając w ten sposób bardziej wciągające wrażenia użytkownika.

Rysunek 1 przedstawia aplikację z widocznym paskiem stanu:

Rysunek 1. Widoczny pasek stanu.

Rysunek 2 przedstawia aplikację z ukrytym paskiem stanu. Zauważ, że pasek akcji również jest ukryty. Nigdy nie należy pokazywać paska akcji bez paska stanu.

Rysunek 2. Ukryty pasek stanu.

Ukryj pasek stanu w systemie Android 4.0 i niższym

Możesz ukryć pasek stanu w systemie Android 4.0 (poziom API 14) i niższym przez ustawienieWindowManager flag. Możesz to zrobić programowo lub ustawiając motyw aktywności w pliku manifestu twojej aplikacji. Ustawienie motywu aktywności w pliku manifestu aplikacji jest preferowanym podejściem, jeśli pasek stanu powinien zawsze pozostać ukryty w aplikacji (choć ściśle mówiąc, możesz programowo zmienić motyw, jeśli chcesz). Na przykład:

<application ... android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > ...</application>

Zalety używania motywu aktywności są następujące:

  • Jest to łatwiejsze w utrzymaniu i mniej podatne na błędy niż ustawianie flagi programowo.
  • Wynikają z tego płynniejsze przejścia interfejsu użytkownika, ponieważ system ma informacje, których potrzebuje do renderowania interfejsu użytkownika przed zainicjowaniem głównej aktywności aplikacji.

Alternatywnie można programowo ustawić WindowManager flagi.To podejście ułatwia ukrywanie i pokazywanie paska stanu, gdy użytkownik wchodzi w interakcję z Twoją aplikacją:

Kotlin

class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) } setContentView(R.layout.activity_main) } ...}

Java

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_main); } ...}

Gdy ustawisz flagi WindowManager (czy to poprzez motyw aktywności, czy programowo), flagi pozostają w mocy, chyba że Twoja aplikacja je wyczyści.

Możesz użyćFLAG_LAYOUT_IN_SCREEN, aby ustawić układ aktywności tak, aby używał tego samego obszaru ekranu, który jest dostępny po włączeniuFLAG_FULLSCREEN. Zapobiega to zmianie rozmiaru Twojej zawartości, gdy pasek stanu ukrywa się i pokazuje.

Ukryj pasek stanu w systemie Android 4.1 i nowszym

Możesz ukryć pasek stanu w systemie Android 4.1 (poziom API 16) i nowszym, używając setSystemUiVisibility().setSystemUiVisibility() ustawia flagi UI na poziomie pojedynczego widoku; te ustawienia są agregowane do poziomu okna. UżyciesetSystemUiVisibility() do ustawienia flag UI daje bardziej szczegółową kontrolę nad paskami systemowymi niż użycie flagWindowManager. Ten fragment ukrywa pasek stanu:

Kotlin

// Hide the status bar.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN// Remember that you should never show the action bar if the// status bar is hidden, so hide that too if necessary.actionBar?.hide()

Java

View decorView = getWindow().getDecorView();// Hide the status bar.int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);// Remember that you should never show the action bar if the// status bar is hidden, so hide that too if necessary.ActionBar actionBar = getActionBar();actionBar.hide();

Uważaj na następujące rzeczy:

  • Po wyczyszczeniu flag UI (na przykład przez odejście od aktywności) Twoja aplikacja musi je zresetować, jeśli chcesz ponownie ukryć paski.Zobacz Reagowanie na zmiany widoczności UI, aby omówić, jak słuchać zmian widoczności UI, aby Twoja aplikacja mogła odpowiednio zareagować.
  • To, gdzie ustawisz flagi UI, ma znaczenie. Jeśli ukryjesz paski systemowe w metodzie onCreate() swojej aktywności, a użytkownik naciśnie przycisk Home, paski systemowe pojawią się ponownie. Gdy użytkownik ponownie otworzy aktywność, metoda onCreate() nie zostanie wywołana, więc paski systemowe pozostaną widoczne. Jeśli chcesz, aby systemowe zmiany UI utrzymywały się, gdy użytkownik wchodzi i wychodzi z aktywności, ustaw flagi UI wonResume() lub onWindowFocusChanged().
  • Metoda setSystemUiVisibility() ma efekt tylko wtedy, gdy widok, z którego ją wywołujesz, jest widoczny.
  • Oddalenie się od widoku powoduje wyczyszczenie flag ustawionych za pomocą setSystemUiVisibility().

Make Content Appearind the Status Bar

On Android 4.1 i nowszych, możesz ustawić zawartość swojej aplikacji, aby pojawiała się za paskiem stanu, tak aby zawartość nie zmieniała rozmiaru, gdy pasek stanu ukrywa się i pokazuje.Aby to zrobić, użyjSYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.Możesz również potrzebować użyćSYSTEM_UI_FLAG_LAYOUT_STABLE, aby pomóc aplikacji utrzymać stabilny układ.

Gdy używasz tego podejścia, staje się to twoją odpowiedzialnością, aby upewnić się, że krytyczne części interfejsu użytkownika twojej aplikacji (na przykład wbudowane elementy sterujące w aplikacji Mapy) nie skończą się zakryte przez paski systemowe. Mogłoby to spowodować, że aplikacja nie nadawałaby się do użytku. W większości przypadków można sobie z tym poradzić, dodając atrybut android:fitsSystemWindows do pliku układu XML, ustawiony natrue. Dostosowuje to wyściełanie okna nadrzędnego ViewGroup, aby pozostawić miejsce na okna systemowe. Jest to wystarczające dla większości aplikacji.

W niektórych przypadkach, jednakże, możesz potrzebować zmodyfikować domyślne wyściełanie, aby uzyskać pożądany układ dla swojej aplikacji. Aby bezpośrednio manipulować sposobem ułożenia zawartości względem pasków systemowych (które zajmują przestrzeń znaną jako „wstawki zawartości” okna), nadpisz fitSystemWindows(Rect insets).Metoda fitSystemWindows() jest wywoływana przez hierarchię widoku, gdy zmieniły się wstawki zawartości dla okna, aby umożliwić oknu odpowiednie dostosowanie zawartości. Przez nadpisanie tej metody możesz obsługiwać insety (a tym samym układ twojej aplikacji) jakkolwiek chcesz.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.