Gesty nadgarstka umożliwiają szybkie korzystanie z aplikacji jedną ręką gdy korzystanie z ekranu dotykowego jest niewygodne.
Na przykład użytkownik może przewinąć stronę przez powiadomienia jedną ręką, trzymając kubek wody inne. Inne zastosowania gestów nadgarstka to:
- W aplikacji do biegania: przechodzenie przez pionowe ekrany, na których widać zrobione kroki, czas, jaki upłynął, i bieżące tempo
- W aplikacji podróżniczej przewijanie informacji o locie i bramce.
- W aplikacji z wiadomościami przewijanie artykułów
Aby sprawdzić gesty nadgarstka na zegarku na urządzeniu, upewnij się, że gesty są Włączony, wybierając Ustawienia > Funkcje zaawansowane > Gesty > Gesty nadgarstka Włączony. Następnie podaj Samouczek gestów na zegarku – wybierz Uruchom samouczek.
Uwaga: potrząśnięcie nadgarstkiem jest gestem cofania lub cofania w całym systemie. i nie można go dostosowywać przez aplikacje.
Gesty nadgarstka można używać na kilka sposobów, zgodnie z opisem w tym przewodniku:
- W przypadku układu krzywego, ma wstępnie zdefiniowane działania gestami
- Za pomocą kluczowych zdarzeń definiowanie nowych działań użytkownika
Każdy gest nadgarstka jest mapowany na stałą int
z
KeyEvent
klasy jak w poniższej tabeli:
Gest | Kluczowe zdarzenie | Opis |
---|---|---|
Szybki obrót nadgarstka od siebie |
KEYCODE_NAVIGATE_NEXT
|
Ten kod klucza należy przekazać do następnego elementu. |
Szybki obrót nadgarstka do siebie |
KEYCODE_NAVIGATE_PREVIOUS
|
Ten kod klucza przechodzi do poprzedniego elementu. |
Użyj układu zakrzywionego, by obsługiwać gesty nadgarstka
Klasa
WearableRecyclerView
udostępnia zakrzywioną
układ dla list i automatycznie obsługuje
gesty nadgarstka. Klasa ma wstępnie zdefiniowane działania dla wystąpień
i gesty nadgarstka, gdy ostrość jest widoczna. Informacje o korzystaniu z
WearableRecyclerView
znajdziesz w artykule Tworzenie list w Wear OS. Zobacz też
Sprawdzone metody w tym przewodniku.
Uwaga: klasa WearableRecyclerView
zastępuje podobne,
.
wycofane w bibliotece pomocy do noszenia.
Nawet jeśli używasz WearableRecyclerView
, możesz też użyć
stałe z KeyEvent
zajęcia. Wstępnie zdefiniowane działania można zastąpić, stosując podklasyfikację
WearableRecyclerView
i ponowne wdrożenie komponentu
onKeyDown()
oddzwonienie. Możesz całkowicie wyłączyć tę funkcję.
za pomocą funkcji setEnableGestureNavigation(false)
.
Więcej informacji:
Obsługa działań klawiatury.
Bezpośrednie używanie kluczowych zdarzeń
Kluczowych zdarzeń możesz używać poza obiektem
WearableRecyclerView
, aby wyzwalać nowe działania w odpowiedzi na gest
zdarzeń. Co ważne, te zdarzenia gestów są rozpoznawane, gdy urządzenie jest włożone
i są wyświetlane w taki sam sposób jak wszystkie kluczowe zdarzenia.
Klasa powiązana z interakcją użytkownika, np. View
lub
Activity
, która stosuje
KeyEvent.Callback
może nasłuchiwać kluczowych zdarzeń związanych z
gesty nadgarstka tak samo, jak w przypadku każdego innego kluczowego zdarzenia. Struktura Androida
wywołuje metodę View
lub Activity
, która ma
skupienie się na kluczowych zdarzeniach. W przypadku gestów onKeyDown()
wywołanie zwrotne metody jest wywoływane po wystąpieniu gestów.
Na przykład aplikacja może zastąpić wstępnie zdefiniowane działania w polu View
lub Activity
, która implementuje KeyEvent.Callback
w ten sposób:
Kotlin
class GesturesActivity : Activity() { /* KeyEvent.Callback */ override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_NAVIGATE_NEXT -> // Do something that advances a user View to the next item in an ordered list. moveToNextItem() KeyEvent.KEYCODE_NAVIGATE_PREVIOUS -> // Do something that advances a user View to the previous item in an ordered list. moveToPreviousItem() else -> { // If you did not handle it, let it be handled by the next possible element as determined // by the Activity. super.onKeyDown(keyCode, event) } } } /** Shows the next item in the custom list. */ private fun moveToNextItem(): Boolean { ... // Return true if handled successfully, otherwise return false. return false } /** Shows the previous item in the custom list. */ private fun moveToPreviousItem(): Boolean { ... // Return true if handled successfully, otherwise return false. return false } }
Java
public final class GesturesActivity extends Activity { @Override /* KeyEvent.Callback */ public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_NAVIGATE_NEXT: // Do something that advances a user View to the next item in an ordered list. return moveToNextItem(); case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS: // Do something that advances a user View to the previous item in an ordered list. return moveToPreviousItem(); } // If you did not handle it, let it be handled by the next possible element as determined by the Activity. return super.onKeyDown(keyCode, event); } /** Shows the next item in the custom list. */ private boolean moveToNextItem() { boolean handled = false; ... // Return true if handled successfully, otherwise return false. return handled; } /** Shows the previous item in the custom list. */ private boolean moveToPreviousItem() { boolean handled = false; ... // Return true if handled successfully, otherwise return false. return handled; } }
Sprawdzone metody
- Zapoznaj się z dokumentem
KeyEvent
iKeyEvent.Callback
, aby dostarczać kluczowe zdarzenia doView
iActivity
. - Zachowaj konsekwencję w kierunku działania: „przesuń nadgarstek od siebie”. w przypadku następny i „obrót nadgarstka do siebie” do poprzedniego elementu.
- Ustaw dotyk równolegle do gestu.
- Prześlij opinię wizualną.
- Nie używaj kodu dostępu do funkcji, która będzie
w przeciwieństwie do reszty systemu. Na przykład nie używaj nazwy
KEYCODE_NAVIGATE_NEXT
, aby anulować działanie lub przejść do na osi lewa i prawej z ruchami. - Nie przechwytuj kluczowych zdarzeń w przypadku elementów, które nie są częścią interfejsu użytkownika, np. widokach znajdujących się poza ekranem lub częściowo i konkretnie. Tak samo jak w przypadku każdego kluczowego zdarzenia.
- Nie interpretuj powtarzających się gestów gestów we własnych własnych gestach. Może to kolidować z „potrząsaniem nadgarstka” gest.
Aby widok mógł odbierać kluczowe zdarzenia związane z gestami, musi mieć skupienie; zobacz
View.setFocusable()
.Gesty są traktowane jako kluczowe zdarzenia, powoduje przejście z „trybu dotykowego”. które mogą wywołać nieoczekiwane rzeczy. Użytkownicy mogą przełączać się między trybem dotykowym, gestów, może być potrzebna metoda
View::setFocusableInTouchmode()
. W niektórych konieczne może być również użyciesetDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)
tak że gdy zaznaczenie zmieni się po przejściu na lub z trybu dotykowego, który przyciąga uwagę.- Używaj tych identyfikatorów:
requestFocus()
iclearFocus()
ostrożnie:- Podczas wywoływania usługi
requestFocus()
upewnij się, że jest on odpowiedni dla i ustaw ostrość. Jeśli widok znajduje się poza ekranem lub jest zasłonięty przez inny widok, mogą wystąpić niespodzianki, gdy gesty wywołują wywołanie zwrotne. - Metoda
clearFocus()
inicjuje wyszukiwanie skupienia w celu znalezienia kolejnego odpowiedni widok. W zależności od hierarchii widoków to wyszukiwanie może i wymagają nieskomplikowanych obliczeń. Może to też spowodować przypisanie fokusu w oglądaniu, którym nie chcesz się skupić.
- Podczas wywoływania usługi
Kluczowe zdarzenia są wyświetlane jako pierwsze w widoku z zaznaczeniem w hierarchii. Jeśli aktywny widok nie obsługuje zdarzenia, czyli zwraca
false
– zdarzenie nie jest wyświetlane w widoku nadrzędnym, nawet czy jest skupiony i maKeyListener
. Zdarzenie jest natomiast przekazywane do bieżącego działania i utrzymując hierarchię widoków.Dlatego konieczne może być rejestruje wszystkie zdarzenia na wyższym poziomie, a następnie przekazuje odpowiednie kody. Możesz też podklasować aktywność i zastąpić Metoda
dispatchKeyEvent(KeyEvent event)
do przechwytywania kluczy w razie potrzeby lub obsługi, gdy nie są obsługiwane niższych warstw.