Einige Wear OS-Geräte haben eine drehbare Seitentaste. Dreht die nutzende Person die können Sie die aktuelle Ansicht Ihrer App nach oben oder unten scrollen. Diese Art der Eingabe wird Drehknopf.
Hinweis: Diese Anleitung bezieht sich hauptsächlich auf die Handhabung des Drehknopfs mit Ansichtsbasierte Benutzeroberflächen Weitere Informationen zur Verwendung des Drehknopfs in Compose für Wear OS findest du unter Drehknopf beim Schreiben:
Viele scrollbare Container, z. B.
ScrollView
,
ListView
,
HorizontalScrollView
,
und WearableRecyclerView
,
unterstützen Drehknopf, falls diese im Fokus sind, ohne dass Wearables
Betriebssystemspezifischer Code
Konzentration ist eine wichtige Voraussetzung, denn unter Android 9 (API-Level
28) und höher werden Aufrufe nicht implizit hervorgehoben.
Fokus auf Best Practices
Damit auf Ereignisse mit Drehknopf reagieren kann, muss ein scrollbarer Container im Fokus sein.
Dreheingabeereignisse erscheinen nicht in der Ansicht
Hierarchie. Wenn keine fokussierte Ansicht vorhanden ist oder die fokussierte Ansicht false
von
View.onGenericMotionEvent()
,
wird das Ereignis an
Activity.onGenericMotionEvent()
Im Folgenden finden Sie Best Practices zum Reagieren auf Drehknopfereignisse:
- Wenn Sie eine Aktivität starten oder auf eine
fokussiert es nicht, auch wenn es
fokussierbar. Um die Ansicht fokussieren zu können, muss die Ansicht die Funktion
<requestFocus />
Taggen oder manuellView.requestFocus()
aufrufen. - Benutzerdefinierte scrollbare Ansichten mit
android:focusable="true"
als fokussierbar markieren undandroid:focusableInTouchMode="true"
. - Wenn Ihre scrollbare Ansicht nach
Activity.onCreate()
angehängt ist, für Wenn Sie mit dem Erstellen der Benutzeroberfläche auf den Abschluss einer Netzwerkanfrage warten, rufen SierequestFocus()
nach dem Anhängen. - Wenn Ihre scrollbare Ansicht anfangs
INVISIBLE
ist oderGONE
,requestFocus()
aufrufen, wenn Sie Folgendes festlegen:VISIBLE
. - Wenn Ihre Aktivität mehrere scrollbare Ansichten umfasst, wählen Sie eine aus, um den Fokus mithilfe der
<requestFocus />
Tag. Verschachteltes Scrollen wird bei der rotierenden Taste an der Seite nicht unterstützt. - Wenn Ihre Benutzeroberfläche eine andere Ansicht enthält,
mit ihr interagiert – zum Beispiel
Mit
InputText
können Nutzer den Fokus wieder auf die scrollbare Ansicht fokussieren wenn der Fokus dadurch verloren geht, dass auf die scrollbare Ansicht getippt wird undrequestFocus()
als Antwort.
Benutzerdefiniertes Drehverhalten
Wenn Ihre scrollbare Ansicht das Scrollen durch Drehknopf nicht nativ unterstützt oder wenn Sie Verwenden Sie den Drehknopf nicht zum Scrollen, sondern zum Beispiel Heran- und Herauszoomen oder Drehregler drehen – Sie können die Scroll-Ereignisse selbst. Achten Sie darauf, dass Ihr Aufruf fokussiert wird. Andernfalls die Ereignisse nicht durch.
Das folgende Code-Snippet zeigt, wie MotionEvent
,
InputDeviceCompat
,
und ViewConfigurationCompat
, um Ihrer Ansicht benutzerdefiniertes Scrollen hinzuzufügen:
Kotlin
myView.setOnGenericMotionListener { v, ev -> if (ev.action == MotionEvent.ACTION_SCROLL && ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) ) { // Don't forget the negation here val delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * ViewConfigurationCompat.getScaledVerticalScrollFactor( ViewConfiguration.get(context), context ) // Swap these axes to scroll horizontally instead v.scrollBy(0, delta.roundToInt()) true } else { false } }
Java
myView.setOnGenericMotionListener(new View.OnGenericMotionListener() { @Override public boolean onGenericMotion(View v, MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_SCROLL && ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) ) { // Don't forget the negation here float delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * ViewConfigurationCompat.getScaledVerticalScrollFactor( ViewConfiguration.get(context), context ); // Swap these axes to scroll horizontally instead v.scrollBy(0, Math.round(delta)); return true; } return false; } });
Mit einem Emulator testen
Mit dem Android-Emulator den Drehknopf simulieren Scrollen auf einem Wear-Gerät. Starte deine Wear-App im Emulator, um sie auszuführen Ihr Projekt ein oder ziehen Sie APK-Datei in den Emulator, um sie zu installieren.
So testen Sie den Drehknopf am Emulator:
- Öffnen Sie im SDK-Manager den Tab SDK-Tools, um Android Emulator 26.0.3 oder höher herunterladen.
- Wählen Sie in Android Studio Tools > Android > AVD-Manager Erstellen Sie ein neues Wear-Gerät mit API 25 oder höher liegen.
- Führe den Emulator über Android Studio aus.
- Klicken Sie unten in der Emulator-Symbolleiste auf das Dreipunkt-Menü. Klicken Sie auf das Tab Drehknopf im neuen Fenster, um die Oberfläche für den Drehknopf zu öffnen und den Drehknopf zu testen das Scrollen durch Eingabedaten.
Das folgende Video zeigt den Drehknopf im Emulator: