Niektóre urządzenia z Wear OS mają fizyczny obracający się przycisk boczny. Gdy użytkownik zmieni powoduje przewijanie bieżącego widoku aplikacji w górę lub w dół. Ten typ danych wejściowych to tzw. pokrętłem.
Uwaga: ten przewodnik dotyczy głównie obsługi pokrętła Interfejsy oparte na widoku. Więcej informacji o obsłudze pokrętła w funkcji Compose na Wear OS: Rotary wejściowe podczas tworzenia wiadomości.
 Wiele kontenerów z możliwością przewijania, takich jak
  ScrollView,
  ListView,
  HorizontalScrollView,
  i WearableRecyclerView,
  obsługują pokrętło, jeśli są ustawione ostrość bez konieczności noszenia.
  Kod związany z systemem operacyjnym.
  Skupienie jest ważnym wymogiem wstępnym, ponieważ na Androidzie 9 (poziom interfejsu API)
  28) i wyższych, wyświetlenia nie są skupione automatycznie.
Koncentracja na sprawdzonych metodach
Aby zareagować na zdarzenia pokrętła, kontener z możliwością przewijania musi być zaznaczony.
  Zdarzenia wprowadzania obrotowego wprowadzania danych nie wyświetlają widoku jako bąbelków
  w hierarchii. Jeśli nie ma zaznaczonego widoku lub jeśli ten widok zwraca false z
  View.onGenericMotionEvent(),
  to zdarzenie jest wysyłane na adres
  Activity.onGenericMotionEvent()
Poniżej znajdziesz sprawdzone metody reagowania na zdarzenia związane z obrotami wprowadzania danych:
- Pamiętaj, że domyślnie uruchomienie działania czy nawet kliknięcie ikony
  nie zapewnia fokusu, nawet jeśli
  które można zaznaczyć. Aby zawęzić widok, musi on korzystać z funkcji
  <requestFocus />lub ręcznie wywołajView.requestFocus().
- Oznacz niestandardowe widoki z możliwością przewijania jako możliwe do zaznaczenia za pomocą elementów android:focusable="true"iandroid:focusableInTouchMode="true".
- Jeśli widok przewijany jest dołączony po Activity.onCreate()– przez Na przykład oczekiwanie na zakończenie żądania sieciowego przed utworzeniem interfejsurequestFocus()po załączeniu.
- Jeśli widok przewijany to początkowo INVISIBLElubGONE, Wywołuj funkcjęrequestFocus()po ustawieniu naVISIBLE
- Jeśli aktywność obejmuje wiele widoków, które można przewijać, wybierz jeden z nich za pomocą
  <requestFocus />. Zagnieżdżone przewijanie nie jest obsługiwane w przypadku obracającego się przycisku bocznego.
- Jeśli interfejs użytkownika zawiera inny widok, na którym koncentruje się użytkownik,
  wchodzić z nią w interakcję, np.
  InputText, zapewnij użytkownikowi możliwość przywrócenia fokusu do widoku przewijania jeśli straci ostrość, nasłuchuje kliknięć przewijania w widoku przewijanym i wywoła,requestFocus()w odpowiedzi.
Niestandardowe obracanie
Jeśli widok przesuwany nie obsługuje natywnie pokrętnego przewijania danych wejściowych lub chcesz używać pokrętła w czymś innym niż przewijanie – na przykład powiększać i pomniejszać lub obracać pokrętła – możesz obsługiwać zdarzenia przewijania, siebie. Pamiętaj, aby film przyciągał uwagę. W przeciwnym razie wydarzenia nie będą się pojawiać.
Poniższy fragment kodu pokazuje, jak używać MotionEvent,
  InputDeviceCompat,
  i ViewConfigurationCompat
  aby dodać do widoku przewijanie niestandardowe:
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; } });
Testowanie za pomocą emulatora
Użyj emulatora Androida, aby symulować pokrętło. przewijanie treści na urządzeniu Wear. Aby uruchomić aplikację Wear, uruchom emulator swojego projektu lub przeciągnij Aby zainstalować emulator, umieść w nim plik APK.
Aby przetestować pokrętło na emulatorze:
- W Menedżerze pakietów SDK otwórz kartę Narzędzia SDK, aby pobierz emulator Androida w wersji 26.0.3 lub nowszej.
- W Android Studio wybierz Narzędzia >. Android > AVD Manager. Utwórz nowe urządzenie Wear za pomocą interfejsu API 25 lub wyższe.
- Uruchom emulator z Android Studio.
- Kliknij rozszerzone menu z 3 kropkami u dołu paska narzędzi emulatora. Kliknij Otwórz kartę rotarialnych wprowadzania danych w nowym oknie, aby otworzyć pokrętło i pokrętło. przewijanie danych wejściowych.
Ten film przedstawia pokrętło w emulatorze:
