Od Androida 10 (interfejs API na poziomie 29) system Android obsługuje nawigację opartą w pełni na gestach. Aby aplikacje były zgodne z tą funkcją, deweloperzy aplikacji muszą wykonać 2 czynności:
- Rozciągnij zawartość aplikacji od krawędzi do krawędzi.
- Obsługuj gesty aplikacji powodujące konflikt.
Dodatkowo Android 13 (API na poziomie 33) wprowadza gest przewidywanego przejścia wstecz na urządzeniach z Androidem, takich jak telefony, urządzenia z dużym ekranem i urządzenia składane. Jest to część wieloletniego procesu wdrażania. Deweloperzy aplikacji mogą podjąć kroki, aby zapewnić obsługę gestu przewidywanego przejścia wstecz w swoich aplikacjach.
Wyświetlanie treści aplikacji od krawędzi do krawędzi
Aby wykorzystać dodatkowe miejsce na ekranie, które zapewnia pływający pasek nawigacyjny, musisz wprowadzić pewne zmiany w aplikacji.
Szczegółowe informacje znajdziesz w artykule Wyświetlanie treści od krawędzi do krawędzi w aplikacji.
Rozwiązywanie konfliktów gestów w aplikacjach
Model nawigacji przy użyciu gestów może kolidować z gestami, które były wcześniej używane przez deweloperów aplikacji. W związku z tym może być konieczne wprowadzenie zmian w interfejsie aplikacji.
Konflikty z gestami cofania
Nowy gest systemowy do cofania to przesunięcie palcem do środka od lewej lub prawej krawędzi ekranu. Może to zakłócać działanie elementów nawigacyjnych aplikacji w tych obszarach. Aby zachować funkcjonalność elementów przy lewej i prawej krawędzi ekranu, wyłącz gest cofania w wybranych miejscach, wskazując systemowi, które obszary mają reagować na dotykowe wprowadzanie danych. Możesz to zrobić, przekazując List<Rect> do interfejsu API View.setSystemGestureExclusionRects() wprowadzonego w Androidzie 10. Ta metoda jest też dostępna w ViewCompat od androidx.core:core:1.1.0-dev01.
Przykład:
Kotlin
var exclusionRects = listOf(rect1, rect2, rect3) fun onLayout( changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects) } fun onDraw(canvas: Canvas) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects) }
Java
List<Rect> exclusionRects; public void onLayout( boolean changedCanvas, int left, int top, int right, int bottom) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects); } public void onDraw(Canvas canvas) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects); }
Konflikty z gestami powrotu do ekranu głównego lub szybkiego przełączania
Nowe gesty systemowe do przechodzenia na ekran główny i szybkiego przełączania wymagają przesunięcia palcem u dołu ekranu w miejscu, które wcześniej zajmował pasek nawigacyjny. Aplikacje nie mogą zrezygnować z tych gestów, tak jak w przypadku gestu cofania.
Aby rozwiązać ten problem, w Androidzie 10 wprowadziliśmy interfejs API WindowInsets.getMandatorySystemGestureInsets(), który informuje aplikacje o progach rozpoznawania dotyku.
Gry i inne aplikacje, które nie są oparte na widokach
Gry i inne aplikacje, które nie mają hierarchii widoków, często wymagają od użytkownika przesunięcia palcem w pobliżu obszarów gestów systemowych. W takich przypadkach gry mogą używać interfejsu Window.setSystemGestureExclusionRects(), aby wykluczać obszary, które pokrywają się z obszarami zarezerwowanymi dla gestów systemowych. Gry muszą wykluczać te obszary tylko wtedy, gdy jest to konieczne, np. podczas rozgrywki.
Jeśli gra wymaga od użytkownika przesunięcia palcem w pobliżu obszaru gestu ekranu głównego, aplikacja może poprosić o wyświetlenie w trybie pojemnym. Spowoduje to wyłączenie gestów systemowych, gdy użytkownik wchodzi w interakcję z grą, ale pozwoli mu ponownie je włączyć przez przesunięcie palcem od dołu ekranu.
Aktualizowanie aplikacji, aby obsługiwała gest przewidywanego przejścia wstecz
Android 13 (poziom API 33) wprowadza gest przewidywanego przejścia wstecz na urządzeniach z Androidem, takich jak telefony, urządzenia z dużym ekranem i urządzenia składane. Gest przewidywanego przejścia wstecz jest częścią wieloletniego procesu wdrażania. Po pełnym wdrożeniu ta funkcja umożliwia użytkownikom podgląd miejsca docelowego lub innego wyniku gestu wstecz, zanim zostanie on w pełni wykonany. Dzięki temu użytkownicy mogą zdecydować, czy chcą kontynuować, czy pozostać w bieżącym widoku.
Szczegółowe informacje znajdziesz w artykule Dodawanie obsługi gestu przewidywanego przejścia wstecz.
Dodatkowe materiały
Więcej informacji o nawigacji przy użyciu gestów znajdziesz tutaj:
Posty na blogu
Filmy
- Android 10: nawigacja przy użyciu gestów
- Ciemny motyw i nawigacja przy użyciu gestów (Google I/O '19)