Handgelenkgesten ermöglichen schnelle, einhändige Interaktionen mit deiner App wenn ein Touchscreen unpraktisch ist.
Nutzende können zum Beispiel scrollen, über Benachrichtigungen mit einer Hand, während Sie eine Tasse Wasser mit der Sonstiges. Weitere Anwendungsfälle für Handgelenksgesten:
- Wenn man in einer Jogging-App durch vertikale Bildschirme navigiert, die zurückgelegten Schritte, die verstrichene Zeit und das aktuelle Tempo
- In einer Reise-App durch Flug- und Gateinformationen scrollen
- In einer Nachrichten-App durch Artikel scrollen
Handgelenksgesten auf einer Smartwatch prüfen Gerät aktivieren, vergewissern Sie sich, dass Gesten durch Auswahl von Einstellungen > Erweiterte Funktionen > Touch-Gesten > Handgelenksgesten An: Füllen Sie dann die Anleitung für Touch-Gesten auf der Smartwatch durch Auswahl von Anleitung starten.
Hinweis:Das Schütteln des Handgelenks ist die systemweite Zurück-Bewegung bzw. die Rückgängig-Funktion. und kann nicht von Apps angepasst werden.
Handgelenksgesten können auf folgende Arten verwendet werden, wie in diesem Leitfaden beschrieben:
- Es hat ein gewölbtes Layout, das hat vordefinierte Bewegungsaktionen
- Indem Sie Schlüsselereignisse direkt für Neue Nutzeraktionen definieren
Jede Handgelenksgeste wird einer int
-Konstante vom
KeyEvent
enthalten, wie in der folgenden Tabelle dargestellt:
Touch-Geste | Schlüsselereignis | Beschreibung |
---|---|---|
Handgelenk schnell von sich weg drehen |
KEYCODE_NAVIGATE_NEXT
|
Dieser Schlüsselcode wird zum nächsten Element übertragen. |
Handgelenk schnell zu sich drehen |
KEYCODE_NAVIGATE_PREVIOUS
|
Dieser Schlüsselcode wird zum vorherigen Element verschoben. |
Geschwungenes Layout zur Unterstützung von Handgelenksgesten
Die Klasse
WearableRecyclerView
bietet eine gekrümmte
für Listen erstellen und unterstützt
Handgelenksgesten. Die Klasse verfügt über vordefinierte Aktionen für
Handgelenkbewegungen, wenn die Ansicht im Fokus ist. Informationen zur Verwendung
der Klasse WearableRecyclerView
erhalten Sie weitere Informationen unter Listen unter Wear OS erstellen. Weitere Informationen finden Sie in den
Best Practices dieses Leitfadens.
Hinweis: Die Klasse WearableRecyclerView
ersetzt eine ähnliche,
<ph type="x-smartling-placeholder"></ph>
verworfen in der Wearable-Supportbibliothek.
Auch wenn Sie ein WearableRecyclerView
verwenden, sollten Sie
Konstanten aus KeyEvent
. Die vordefinierten Aktionen können überschrieben werden, indem eine Unterklasse der
WearableRecyclerView
und erneute Implementierung der
onKeyDown()
-Rückruf. Das Verhalten kann vollständig deaktiviert werden.
mit setEnableGestureNavigation(false)
.
Weitere Informationen finden Sie unter
<ph type="x-smartling-placeholder"></ph>
Tastaturaktionen ausführen.
Schlüsselereignisse direkt verwenden
Du kannst Schlüsselereignisse außerhalb von
WearableRecyclerView
verwenden, um neue Aktionen als Reaktion auf Gesten auszulösen
Ereignisse. Wichtig: Diese Bewegungsereignisse werden erkannt, wenn sich ein Gerät im
Aktivmodus aktiviert sind und wie alle Schlüsselereignisse ausgeliefert werden.
Eine Klasse, die sich auf eine Nutzerinteraktion bezieht, z. B. View
oder ein
Activity
, und das implementiert
KeyEvent.Callback
kann Daten zu Schlüsselereignissen erfassen, die mit
Handgelenkbewegungen ebenso wie andere Schlüsselereignisse. Das Android-Framework
ruft View
oder Activity
auf,
sich auf die Schlüsselereignisse konzentrieren. Bei Touch-Gesten ist das onKeyDown()
wird beim Auftreten von Gesten aufgerufen.
Beispielsweise kann eine App vordefinierte Aktionen in einem View
überschreiben.
oder Activity
, die KeyEvent.Callback
so implementiert:
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; } }
Best Practices
KeyEvent
ansehen undKeyEvent.Callback
Seiten für die Übermittlung von Schlüsselereignissen anView
undActivity
.- Einheitliche Ausrichtung beibehalten: „Handgelenk weg drehen“ verwenden für „Weiter“ und „Dreh das Handgelenk schnell rein“ zurück.
- Halte für eine Touch-Geste parallele Berührungen ein.
- Visuelles Feedback geben.
- Verwenden Sie keinen Schlüsselcode, um Funktionen zu implementieren, die
und nicht mit dem Rest des Systems. Verwenden Sie beispielsweise
KEYCODE_NAVIGATE_NEXT
, um eine Aktion abzubrechen oder zu navigieren der linken und rechten Achse. - Schlüsselereignisse nicht für Elemente abfangen, die nicht Teil des wie z. B. Ansichten, die nicht auf dem Bildschirm zu sehen sind oder nur teilweise sichtbar sind gesprochen. Dies entspricht dem für alle Schlüsselereignisse.
- Interpretieren Sie wiederholte Wischbewegungen nicht in Ihre eigene neuartige Geste. Dies könnte zu Konflikten mit der vom System ausgeführten „Schütteln des Handgelenks“ führen. Touch-Geste.
Damit eine Ansicht Gesten-Schlüsselereignisse empfangen kann, muss sie über verfügen. fokus; siehe
View.setFocusable()
.Da Gesten als Schlüsselereignisse behandelt werden, lösen sie einen Wechsel aus dem Touch-Modus die zu unerwarteten Ergebnissen führen, Dinge. Da Nutzende abwechselnd zwischen Touch- und können Sie die Methode
View::setFocusableInTouchmode()
verwenden. In einigen kann es auch erforderlich sein,setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)
, also Wenn sich der Fokus nach einem Wechsel zum oder vom Touchmodus ändert, in den Fokus rückt.requestFocus()
undclearFocus()
vorsichtig sein: <ph type="x-smartling-placeholder">- </ph>
- Wenn du
requestFocus()
aufrufst, achte darauf, dass es für den fokussiert werden soll. Wenn das Bild nicht vom Bildschirm sichtbar ist oder von einer anderen Ansicht verdeckt wird, können Überraschungen auftreten, wenn Gesten Rückrufe auslösen. - Die Methode
clearFocus()
initiiert eine Fokussuche, um eine andere zu finden. für die richtige Ansicht auswählen. Je nach Ansichtshierarchie kann diese Suche nicht triviale Berechnungen erfordern. Außerdem kann er Ihnen am Ende in eine Ansicht verschieben, bei der Sie nicht erwarten, dass sie im Fokus ist.
- Wenn du
Schlüsselereignisse werden zuerst in der Ansicht ausgeliefert, wobei der Fokus in der Ansicht liegt Hierarchie. Wenn die fokussierte Ansicht das Ereignis nicht verarbeitet, d. h., es wird zurückgegeben,
false
: Das Ereignis wird nicht an die übergeordnete Ansicht gesendet, auch nicht wenn es fokussiert werden kann und einKeyListener
hat. Stattdessen wird das Ereignis an die aktuelle Aktivität geliefert. der Ansichtshierarchie im Fokus.Daher kann es notwendig sein, alle Ereignisse auf der höheren Ebene erfassen und dann die relevanten Codes weitergeben. Alternativ können Sie die Aktivität ableiten und die
dispatchKeyEvent(KeyEvent event)
-Methode zum Abfangen von Schlüsseln bei Bedarf bearbeiten oder bearbeiten, niedrigeren Ebenen.