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ą.
Ponadto 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 ich aplikacje obsługiwały przewidujący gest 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, 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
.
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 nakładają się na obszary zarezerwowane 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: