Zapewnienie zgodności z nawigacją przy użyciu gestów

Począwszy od Androida 10 (poziom interfejsu API 29) system Android obsługuje nawigację opartą wyłącznie na gestach. Aby zapewnić zgodność aplikacji z tą funkcją, deweloperzy muszą wykonać 2 czynności:

  • Rozciągnij zawartość aplikacji od krawędzi do krawędzi.
  • Obsługa gestów w konfliktujących się aplikacjach.

Android 13 (poziom interfejsu API 33) wprowadza przewidujący gest wstecz na urządzeniach z Androidem, takich jak telefony, urządzenia z dużymi ekranami i urządzenia składane. Jest to część wieloletniego wydania. Deweloperzy aplikacji mogą podjąć działania, aby zapewnić obsługę przewidującego gestu wstecz.

Przekazywanie treści aplikacji typu edge-to-edge

Aby wykorzystać dodatkową przestrzeń ekranu udostępnianą przez pływający pasek nawigacyjny, musisz wprowadzić pewne zmiany w swojej aplikacji.

Więcej informacji znajdziesz w artykule Wyświetlanie treści od krawędzi do krawędzi w aplikacji.

Obsługa sprzecznych gestów aplikacji

Model nawigacji za pomocą gestów może kolidować z gestami używanymi wcześniej przez deweloperów aplikacji. W efekcie może być konieczne dostosowanie interfejsu aplikacji.

Konflikty z gestem wstecz

Nowy gest systemowy wstecz to przesunięcie palcem od lewej lub prawej krawędzi ekranu do środka. Może to zakłócać działanie elementów nawigacji aplikacji w tych obszarach. Aby zachować funkcjonalność elementów po lewej i po prawej stronie ekranu, wyłącz gest wstecz w wybranych miejscach, wskazując systemowi, które obszary mają reagować na dotyk. Aby to zrobić, prześlij obiekt List<Rect> do interfejsu View.setSystemGestureExclusionRects() API wprowadzonego w Androidzie 10. Od androidx.core:core:1.1.0-dev01 ta metoda jest też dostępna w ViewCompat.

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 gestem wracania do ekranu głównego lub szybkiego przełączania

Nowe gesty systemowe dotyczące ekranu głównego i szybkiego przełączania wymagają przesunięcia palcem w dół 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 rozwiązać ten problem, w Androidzie 10 wprowadzono interfejs API WindowInsets.getMandatorySystemGestureInsets(), który informuje aplikacje o progach rozpoznawania dotyku.

Gry i inne aplikacje niebędące aplikacjami 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(), aby wykluczać obszary, które pokrywają się z obszarem zarezerwowanym dla gestów systemowych. Twórcy gier muszą pamiętać, aby 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 powitalnego, może poprosić o wyświetlenie w trybie pełnoekranowym. Spowoduje to wyłączenie gestów systemowych podczas interakcji z grą, ale użytkownik będzie mógł je ponownie włączyć, przesuwając palcem od dołu ekranu.

Zaktualizuj aplikację, aby obsługiwała przewidujący gest wstecz

Android 13 (poziom API 33) wprowadza przewidujący gest wstecz na urządzeniach z Androidem, takich jak telefony, urządzenia z dużym ekranem i urządzenia składane. Wskazanie wstecz jest częścią wieloletniej aktualizacji. Po pełnym wdrożeniu ta funkcja pozwoli użytkownikom wyświetlić podgląd miejsca docelowego lub innego wyniku gestu wstecz, zanim go wykonają, dzięki czemu będą mogli zdecydować, czy kontynuować, czy pozostać w bieżącym widoku.

Więcej informacji znajdziesz w artykule Dodawanie obsługi przewidującego gestu wstecz.

Dodatkowe materiały

Więcej informacji o nawigacji za pomocą gestów znajdziesz w tych artykułach:

Posty na blogu

Filmy