Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bazı Wear OS cihazlarda fiziksel bir dönen yan düğme bulunur. Kullanıcı
düğmesi, uygulamanızın mevcut görünümünü yukarı veya aşağı kaydırır. Bu tür girdilere
dönen giriş.
Not: Bu kılavuz birincil olarak çevirmeli girişin kullanımı ile ilgilidir.
Görünüm tabanlı kullanıcı arayüzleri. Wear OS için Compose'u kullanarak çevirmeli girişleri yönetme hakkında daha fazla bilgi için bkz.
Oluşturma'da döndürmeli giriş.
Örneğin,
ScrollView,
ListView,
HorizontalScrollView,
ve WearableRecyclerView,
Wear gerekmeden odaklanılıyorsa çevirmeli girişi destekle
İşletim sistemine özel kod.
Odaklanma önemli bir ön koşuldur çünkü Android 9'da (API düzeyi)
28) ve daha yüksek olduğunda, görüntülemeler dolaylı olarak odaklanmaz.
En iyi uygulamalara odaklanma
Çevirmeli giriş etkinliklerine yanıt vermek için kaydırılabilir bir kapsayıcıya odaklanılmalıdır.
Döner giriş etkinlikleri görünümü baloncuk olarak açılmıyor
hiyerarşik olarak düzenlenmiştir. Odaklanmış görünüm yoksa veya odaklanılan görünüm şuradan false değerini döndürürse:
View.onGenericMotionEvent(),
etkinlik,
Activity.onGenericMotionEvent().
Çevirmeli giriş etkinliklerine yanıt vermeyle ilgili en iyi uygulamalar şunlardır:
Varsayılan olarak bir etkinlik başlatırken, hatta bir
bir yöntem olsa bile odaklamaz.
odaklanılabilir. Görünümünüze odaklanabilmeniz için, görüntünün
<requestFocus />.
etiketini kullanabilir veya View.requestFocus() öğesini manuel olarak çağırabilirsiniz.
Özel kaydırılabilir görünümleri her ikisini de kullanarak odaklanılabilir olarak işaretleyin: android:focusable="true"
ve android:focusableInTouchMode="true".
Kaydırılabilir görünümünüz Activity.onCreate() tarihinden sonra eklendiyse
Örneğin, kullanıcı arayüzünüzü oluşturmadan önce bir ağ isteğinin tamamlanmasını beklerken,
requestFocus() sonra görünür.
Kaydırılabilir görünümünüz başlangıçta INVISIBLE ise
veya GONE,
şuna ayarladığınızda requestFocus() öğesini ara:
VISIBLE.
Etkinliğinizde kaydırılabilir birden fazla görünüm varsa
<requestFocus />.
kapanış etiketinin hemen öncesine yapıştırın. Dönen yan düğmeyle iç içe yerleştirilmiş kaydırma desteklenmiyor.
Kullanıcı arayüzünüz, kullanıcı işlemi gerçekleştirdiğinde odaklanılan başka bir görünüm içeriyorsa
etkileşime girdiğini gösterir; örneğin,
InputText, kullanıcıya odağı kaydırılabilir görünüme geri getirmesi için bir yol sunar
Kaydırılabilir görünümde dokunmaları dinleyerek ve telefon ederek odağı kaybederse
Yanıt olarak requestFocus().
Özel rotasyon davranışı
Kaydırılabilir görünümünüz çevirmeli giriş kaydırmayı yerel olarak desteklemiyorsa veya çevirmeli
çevirmeli girişinizi kaydırma dışında bir şey için kullanın. Örneğin,
yakınlaştırmak, uzaklaştırmak veya kadranı çevirmek için - kaydırma etkinliklerini
kendiniz. Görüntünüzün odaklandığından emin olun, aksi takdirde
bu etkinlikler gerçekleşmeyecek.
myView.setOnGenericMotionListener{v,ev->
if(ev.action==MotionEvent.ACTION_SCROLL&&
ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)){// Don't forget the negation herevaldelta=-ev.getAxisValue(MotionEventCompat.AXIS_SCROLL)*ViewConfigurationCompat.getScaledVerticalScrollFactor(ViewConfiguration.get(context),context)// Swap these axes to scroll horizontally insteadv.scrollBy(0,delta.roundToInt())true}else{false}}
Java
myView.setOnGenericMotionListener(newView.OnGenericMotionListener(){@OverridepublicbooleanonGenericMotion(Viewv,MotionEventev){if(ev.getAction()==MotionEvent.ACTION_SCROLL&&
ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)){// Don't forget the negation herefloatdelta=-ev.getAxisValue(MotionEventCompat.AXIS_SCROLL)*ViewConfigurationCompat.getScaledVerticalScrollFactor(ViewConfiguration.get(context),context);// Swap these axes to scroll horizontally insteadv.scrollBy(0,Math.round(delta));returntrue;}returnfalse;}});
Emülatör kullanarak test etme
Çevirmeli girişi simüle etmek için Android Emülatör'ü kullanın
Wear cihazda kaydırma işlemi yapılıyor. Çalışmak için emülatörde Wear uygulamanızı başlatın
veya sürükleyerek
APK dosyasını emülatöre ekleyebilirsiniz.
Emülatördeki çevirmeli girişi test etmek için:
SDK yöneticisi'nde SDK araçları sekmesini kullanarak şu işlemleri yapabilirsiniz:
Android Emulator 26.0.3 veya sonraki bir sürümü edinin.
Android Studio'da Araçlar > seçeneğini belirleyin.
Android > AVD Yöneticisi.
API 25 ile yeni bir Wear cihaz oluşturun veya
daha yüksek.
Emülatör araç çubuğunun alt kısmındaki üç nokta taşma menüsünü tıklayın. Önce
Çevirmeli giriş arayüzünü açmak için yeni penceredeki döndürme girişi sekmesini açın ve döndürmeyi deneyin
giriş kaydırma.
Aşağıdaki videoda emülatördeki çevirmeli giriş gösterilmektedir:
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-26 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-26 UTC."],[],[],null,["# Rotary input\n\nSome Wear OS devices contain a physical *rotating side button* . When the user turns the\nbutton, it scrolls your app's current view up or down. This type of input is called\n*rotary input*.\n\n**Note:** This guide refers primarily to handling rotary input using\nView-based UIs. For more information on handling rotary input using Compose for Wear OS, see\n[Rotary input on Compose](/training/wearables/compose/rotary-input).\n\nMany scrollable containers, like\n[ScrollView](/reference/android/widget/ScrollView),\n[ListView](/reference/android/widget/ListView),\n[HorizontalScrollView](/reference/android/widget/HorizontalScrollView),\nand [WearableRecyclerView](/reference/androidx/wear/widget/WearableRecyclerView),\nsupport rotary input if they have focus without requiring any Wear\nOS-specific code.\nHaving focus is an important prerequisite, because on Android 9 (API level\n28) and higher, views don't implicitly receive focus.\n\nFocus best practices\n--------------------\n\n\nTo respond to rotary input events, a scrollable container must have focus.\nRotary input events don't bubble up the view\nhierarchy. If there is no focused view, or if the focused view returns `false` from\n[View.onGenericMotionEvent()](/reference/android/view/View#onGenericMotionEvent(android.view.MotionEvent)),\nthen the event is sent to\n[Activity.onGenericMotionEvent()](/reference/android/app/Activity#onGenericMotionEvent(android.view.MotionEvent)).\n\n\nThe following are best practices around responding to rotary input events:\n\n- Bear in mind that, by default, launching an activity or even tapping on a view does not give it focus, even if it is focusable. To give your view focus, the view must use the [<requestFocus /\u003e](/guide/topics/resources/layout-resource) tag or manually call [View.requestFocus()](/reference/android/view/View#requestFocus()).\n- Mark custom scrollable views as focusable using both `android:focusable=\"true\"` and `android:focusableInTouchMode=\"true\"`.\n- If your scrollable view is attached after [Activity.onCreate()](/reference/android/app/Activity#onCreate(android.os.Bundle))---for example, waiting for a network request to finish before building your UI, call `requestFocus()` after attaching it.\n- If your scrollable view is initially [INVISIBLE](/reference/android/view/View#INVISIBLE) or [GONE](/reference/android/view/View#GONE), call `requestFocus()` when you set it to [VISIBLE](/reference/android/view/View#VISIBLE).\n- If your activity contains multiple scrollable views, choose one to focus using the [<requestFocus /\u003e](/guide/topics/resources/layout-resource) tag. Nested scrolling is not supported with the rotating side button.\n- If your UI contains some other view that takes focus when the user interacts with it---for example, an `InputText`, give the user a way to restore focus to the scrollable view if it loses focus by listening for taps on the scrollable view and calling `requestFocus()` in response.\n\nCustom rotating behavior\n------------------------\n\nIf your scrollable view doesn't natively support rotary input scrolling, or if you want to\nuse your rotary input for something other than scrolling---such as to\nzoom in and out or to turn dials---you can handle the scroll events\nyourself. Remember to make sure your view gains focus, otherwise\nthe events will not come through.\n\nThe following code snippet shows how to use [MotionEvent](/reference/android/view/MotionEvent),\n[InputDeviceCompat](/reference/kotlin/androidx/core/view/InputDeviceCompat),\nand [ViewConfigurationCompat](/reference/androidx/core/view/ViewConfigurationCompat)\nto add custom scrolling to your view: \n\n### Kotlin\n\n```kotlin\nmyView.setOnGenericMotionListener { v, ev -\u003e\n if (ev.action == MotionEvent.ACTION_SCROLL &&\n ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)\n ) {\n // Don't forget the negation here\n val delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) *\n ViewConfigurationCompat.getScaledVerticalScrollFactor(\n ViewConfiguration.get(context), context\n )\n // Swap these axes to scroll horizontally instead\n v.scrollBy(0, delta.roundToInt())\n true\n } else {\n false\n }\n}\n```\n\n### Java\n\n```java\nmyView.setOnGenericMotionListener(new View.OnGenericMotionListener() {\n @Override\n public boolean onGenericMotion(View v, MotionEvent ev) {\n if (ev.getAction() == MotionEvent.ACTION_SCROLL &&\n ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)\n ) {\n // Don't forget the negation here\n float delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) *\n ViewConfigurationCompat.getScaledVerticalScrollFactor(\n ViewConfiguration.get(context), context\n );\n\n // Swap these axes to scroll horizontally instead\n v.scrollBy(0, Math.round(delta));\n\n return true;\n }\n return false;\n }\n});\n```\n\nTest using an emulator\n----------------------\n\nUse the [Android Emulator](/studio/run/emulator#about) to simulate rotary input\nscrolling on a Wear device. Launch your Wear app on the emulator to run\nyour project or drag an\nAPK file onto the emulator to install it.\n\nTo test the rotary input on the emulator:\n\n1. From the [SDK manager](/tools/help/sdk-manager), use the **SDK tools** tab to get Android Emulator 26.0.3 or higher.\n2. In Android Studio, select **Tools \\\u003e\n Android \\\u003e AVD Manager** . [Create a new Wear device](/studio/run/managing-avds#createavd) with API 25 or higher.\n3. [Run the emulator from Android Studio](/studio/run/emulator#runningapp).\n4. Click the three-dot overflow menu at the bottom of the emulator toolbar. Click the **Rotary input** tab in the new window to open the rotary input interface and try rotary input scrolling.\n\nThe following video shows rotary input in the emulator:"]]