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 aplikacji, które się wykluczają.

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ąć odpowiednie kroki, aby upewnić się, że aplikacje obsługują ten gest.

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 w aplikacji od krawędzi do krawędzi.

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, wyklucz gest wstecz, wskazując systemowi, które obszary mają rozpoznawać 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.

Na 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 wykrywania 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 nakładają się na obszary zarezerwowane na gesty systemowe. 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 interfejsu API 33) wprowadza gest cofania się w tle na urządzeniach z Androidem, takich jak telefony, duże ekrany 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 przy użyciu gestów:

Posty na blogu

Filmy