Od Androida 10 (poziom API 29) system Android obsługuje w pełni nawigację opartą na gestach. Aby aplikacje były zgodne z tą funkcją, deweloperzy muszą wykonać 2 czynności:
- Rozciągnij zawartość aplikacji od krawędzi do krawędzi.
- Obsługiwać gesty aplikacji, które powodują konflikt.
Dodatkowo Android 13 (poziom [interfejsu] API 33) wprowadza gest przewidywanego przejścia wstecz na urządzenia z Androidem, takie jak telefony, urządzenia z dużym ekranem i urządzenia składane. Jest to część wieloletniego procesu wdrażania. Deweloperzy aplikacji mogą podjąć działania, aby zapewnić obsługę gestu przewidywanego przejścia wstecz.
Wyświetlanie treści aplikacji od krawędzi do krawędzi
Aby wykorzystać dodatkową przestrzeń na ekranie udostępnianą przez pływający pasek nawigacyjny, musisz wprowadzić w aplikacji pewne zmiany.
Więcej informacji znajdziesz w artykule Wyświetlanie treści od krawędzi do krawędzi w aplikacji.
Rozwiązywanie konfliktów między gestami w aplikacjach
Model nawigacji przy użyciu gestów może powodować konflikty z gestami, które były wcześniej używane przez deweloperów aplikacji. W związku z tym może być konieczne dostosowanie interfejsu użytkownika aplikacji.
Konflikty z gestami cofania
Nowy gest systemowy do cofania to przesunięcie palcem do wewnątrz od lewej lub prawej krawędzi ekranu. Może to kolidować z elementami nawigacyjnymi aplikacji w tych obszarach. Aby zachować funkcjonalność elementów na lewej i prawej krawędzi ekranu, możesz zrezygnować z gestu cofania, wskazując systemowi, które regiony mają odbierać dane wejściowe dotyku. Możesz to zrobić, przekazując wartość List<Rect> do interfejsu View.setSystemGestureExclusionRects() API 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 strony głównej lub szybkiego przełączania
Nowe gesty systemowe dotyczące ekranu głównego i szybkiego przełączania obejmują przesuwanie palcem u dole ekranu w miejscu, w którym wcześniej znajdował się pasek nawigacyjny. Aplikacje nie mogą zrezygnować z tych gestów, tak jak w przypadku gestu wstecz.
Aby złagodzić ten problem, w Androidzie 10 wprowadziliśmy interfejs API WindowInsets.getMandatorySystemGestureInsets(), który informuje aplikacje o progach rozpoznawania dotyku.
Gry i inne aplikacje inne niż View
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ć
Window.setSystemGestureExclusionRects()
do wykluczania obszarów, które pokrywają się z obszarami zarezerwowanymi dla gestów systemowych. Gry powinny wykluczać te obszary tylko w razie potrzeby, np. podczas rozgrywki.
Jeśli gra wymaga od użytkownika przesuwania palcem w pobliżu obszaru gestu powrotu do ekranu głównego, aplikacja może poprosić o wyświetlenie w trybie pełnoekranowym. Wyłącza to gesty systemowe, gdy użytkownik wchodzi w interakcję z grą, ale pozwala mu ponownie włączyć gesty systemowe, przesuwając palcem od dołu ekranu.
Aktualizowanie aplikacji, aby obsługiwała gest przewidywanego przejścia wstecz
W Androidzie 13 (poziom 33 interfejsu API) wprowadzono 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 predykcyjnego cofania jest częścią wieloletniego wydania. Po pełnym wdrożeniu ta funkcja umożliwi użytkownikom wyświetlanie podglądu miejsca docelowego lub innego wyniku gestu przejścia wstecz, zanim w pełni go wykonają. Dzięki temu będą mogli zdecydować, czy chcą kontynuować, czy pozostać na bieżącym ekranie.
Więcej informacji 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 w tych artykułach:
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)