Wear'da bilek hareketlerini kullanma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bilek hareketleri, uygulamanızla tek elle hızlı etkileşimler kurmanızı sağlayabilir
bunu yapabiliriz.
Örneğin, kullanıcı
yanında bir bardak su tutarak tek elle bildirimler aracılığıyla
diğer. Bilek hareketlerinin diğer kullanım alanlarından bazıları şunlardır:
- Bir koşu uygulamasında, ekranda duran
atılan adımlar, geçen süre ve mevcut hız
- Bir seyahat uygulamasında, uçuş ve kapı bilgilerini kaydırırken
- Haber uygulamasında, makaleler arasında gezinerek
Kol saatindeki bilek hareketlerini incelemek için
kullanıyorsanız, hareketlerin
Ayarlar > İleri seviye özellikler > Hareketler > Bilek Hareketleri
Açık. Daha sonra
Saatte Eğitimi Başlat'ı seçerek hareketler eğiticisini kullanabilirsiniz.
Not: Bileği sallamak sistem genelinde geri alma veya geri alma hareketidir
ve uygulamalar tarafından özelleştirilemez.
Bilek hareketleri, bu kılavuzda açıklanan aşağıdaki şekillerde kullanılabilir:
Her bilek hareketi bir int
sabiti ile eşlenir.
KeyEvent
sınıfını değiştirin:
Bilek hareketlerini desteklemek için eğri bir düzen kullanın
WearableRecyclerView
sınıfı eğri
düzenlerini destekler ve otomatik olarak destekler
bilek hareketleri. Sınıfta şunun tekrarları için önceden tanımlanmış işlemler var:
görünümde odaklanıldığında bilek hareketleri yapılmalıdır. DMAIC ve Yalın Altı Sigma yaklaşımının
WearableRecyclerView
sınıfı için Wear OS'te liste oluşturma konusuna bakın. Ayrıca bkz.
En iyi uygulamalar bölümüne göz atın.
Not: WearableRecyclerView
sınıfı, benzer bir sınıfla
desteği sonlandırılmış sınıfıyla ilgili yeni özellikler eklemeyi planlıyoruz.
Bir WearableRecyclerView
kullansanız bile
KeyEvent
öğesinden sabit değerler
sınıfını kullanır. Önceden tanımlanmış eylemler,
WearableRecyclerView
ve yeniden uygulamak için
onKeyDown()
geri arama. Bu davranış tamamen devre dışı bırakılabilir
setEnableGestureNavigation(false)
kullanarak deneyin.
Daha fazla bilgi için bkz.
Klavye işlemlerini işleme.
Önemli etkinlikleri doğrudan kullan
Harekete yanıt olarak yeni işlemleri tetiklemek için
WearableRecyclerView
dışındaki önemli etkinlikleri kullanabilirsiniz
etkinlikler. Daha da önemlisi, bu hareket etkinlikleri cihaz açık olduğunda tanınır
ve bunlar tüm önemli etkinliklerle aynı şekilde sunulur.
Kullanıcı etkileşimiyle ilgili bir sınıf. Örneğin, View
veya
Activity
ve şunu uygular:
KeyEvent.Callback
aşağıdakilerle ilgili önemli etkinlikleri dinleyebilir:
bilek hareketlerini de kullanabilirsiniz. Android çerçevesi
şunu arar: View
veya Activity
Bu sayede önemli etkinliklere
odaklanabilirsiniz. Hareketler için onKeyDown()
yöntem geri çağırması, hareketler gerçekleştiğinde çağrılır.
Örneğin, bir uygulama View
öğesindeki önceden tanımlanmış işlemleri geçersiz kılabilir
veya KeyEvent.Callback
öğesini aşağıdaki gibi uygulayan Activity
:
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;
}
}
En iyi uygulamalar
KeyEvent
inceleyin
ve önemli etkinliklerin hedeflenmesi için
KeyEvent.Callback
sayfa
View
ve Activity
.
- Tutarlı bir yön istiyorsanız "bileğinizi dışarı doğru sallayın" özelliğini kullanın. şunun için:
sonraki ve "bileğinizi içeri doğru çevirin" bakın.
- Hareket için paralel dokunuş yapın.
- Görsel geri bildirim sağlama.
- Gereken işlevleri uygulamak için
sisteme aykırıdır. Örneğin,
KEYCODE_NAVIGATE_NEXT
bir işlemi iptal etmek veya
çizgilerle gösterilen sol-sağ eksen.
-
kullanıcı arayüzü (ör. ekran dışı veya kısmen)
cevaplar. Bu durum tüm önemli etkinlikler için aynıdır.
- Tekrarlanan fiske hareketlerinizi kendi roman jestinizde yeniden yorumlamayın.
Bu işlem, sistemin "bileği sallaması" ile çakışabilir. hareketi yapın.
Bir görünümün hareket önemli etkinliklerini alabilmesi için olması gerekir
odak;
View.setFocusable()
adlı makaleyi inceleyin.
Hareketler önemli etkinlik olarak işlendiği için
"dokunma modundan" geçişi tetiklerler. beklenmedik durumlarla ilgili
sahip olmalıyız. Kullanıcılar dokunma ve iletişim
hareketlerini görmüyorsanız
View::setFocusableInTouchmode()
yöntemi gerekebilir. Bazılarında
bazı durumlarda ise
setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)
yani
Dokunma moduna geçiş yaptıktan sonra veya bu moddan sonra odak değiştiğinde,
odak noktası olacaktır.
requestFocus()
ve
clearFocus()
dikkat edin:
requestFocus()
numaralı telefonu aradığınızda, bunun şunun için uygun olduğundan emin olun:
sahip olması gerekir. Görüntü ekran dışındaysa veya başka bir görünümün kapsamındaysa
Hareketler geri çağırmaları tetiklediğinde sürprizler yaşanabilir.
clearFocus()
yöntemi, başka bir öğe bulmak için odak araması başlatır
uygun bir görünümdür. Görünüm hiyerarşisine bağlı olarak bu arama
çok basit hesaplamalar gerektirecektir. Ayrıca, sonuçta odak noktanız da
beklemediğiniz bir görünüme
geçmenizi sağlar.
Önemli etkinlikler, odak görüntüde olacak şekilde önce görünüme yayınlanır
hiyerarşik olarak düzenlenmiştir. Odaklanılmış görünüm etkinliği işlemezse (diğer bir deyişle,
false
: Etkinlik, üst görünüme iletilmese bile
odaklanabiliyorsa ve
KeyListener
içeriyorsa. Bunun yerine, etkinlik mevcut etkinliğe iletilir
görünüm hiyerarşisini
kullanarak yapabilirsiniz.
Bu nedenle, hedeflerinize ulaşmak için
tüm etkinlikleri daha üst düzeyde yakalayabilir, ardından ilgili kodları bir araya aktarabilirsiniz.
Alternatif olarak, etkinliği alt sınıfa alabilir ve
Anahtarlara müdahale etmek için
dispatchKeyEvent(KeyEvent event)
yöntemi
zamanında ele almayacak ve gerektiğinde
alt katmanlarda düzenleyebilirsiniz.
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,["# Use wrist gestures on Wear\n\nWrist gestures can enable quick, one-handed interactions with your app\nwhen a touch screen is inconvenient.\n\n\nFor example, a user can scroll\nthrough notifications with one hand while holding a cup of water with the\nother. Other use cases for wrist gestures include the following:\n\n- In a jogging app, navigating through vertical screens that show the steps taken, time elapsed, and current pace\n- In a travel app, scrolling through flight and gate information\n- In a news app, scrolling through articles\n\n\nTo review the [wrist gestures](https://support.google.com/androidwear/answer/6312406) on a watch\ndevice, confirm that gestures are\nturned on by selecting **Settings \\\u003e Advanced features \\\u003e Gestures \\\u003e Wrist Gestures\nOn** . Then complete the\nGestures tutorial on the watch by selecting **Launch Tutorial**.\n\n\n**Note:** Shaking the wrist is the system-wide back or undo gesture\nand is not available for apps to customize.\n\n\nWrist gestures can be used in the following ways, as described in this guide:\n\n- With a [curved layout](#using_wrv), which has predefined gesture actions\n- By using [key events directly](#using_key_events) to define new user actions\n\n\nEach wrist gesture is mapped to an `int` constant from the\n[KeyEvent](/reference/android/view/KeyEvent)\nclass, as shown in the following table:\n\n| Gesture | KeyEvent | Description |\n|-----------------|-------------------------------------------------------------------------------------------|------------------------------------------|\n| Flick wrist out | [`KEYCODE_NAVIGATE_NEXT`](/reference/android/view/KeyEvent#KEYCODE_NAVIGATE_NEXT) | This key code goes to the next item. |\n| Flick wrist in | [`KEYCODE_NAVIGATE_PREVIOUS`](/reference/android/view/KeyEvent#KEYCODE_NAVIGATE_PREVIOUS) | This key code goes to the previous item. |\n\nUse a curved layout to support wrist gestures\n---------------------------------------------\n\n\nThe [WearableRecyclerView](/reference/androidx/wear/widget/WearableRecyclerView) class provides a curved\nlayout for lists and automatically supports\nwrist gestures. The class has predefined actions for occurrences of\nwrist gestures when the view has focus. For information about using\nthe `WearableRecyclerView` class, see [Create lists on Wear OS](/training/wearables/ui/lists). Also, see the\n[Best practices](#best_practices) section of this guide.\n\n\n**Note:** The `WearableRecyclerView` class replaces a similar,\n[deprecated](/training/wearables/ui/wear-ui-library#deprecations) class in the Wearable Support Library.\n\n\nEven if you use a `WearableRecyclerView`, you might want to use\nconstants from the [KeyEvent](/reference/android/view/KeyEvent)\nclass. The predefined actions can be overridden by subclassing the\n`WearableRecyclerView` and re-implementing the\n`onKeyDown()` callback. The behavior can be disabled entirely\nby using [`setEnableGestureNavigation(false)`](/reference/android/support/wearable/view/WearableListView#setEnableGestureNavigation(boolean)).\nFor more information, see\n[Handle keyboard actions](/training/keyboard-input/commands).\n\nUse key events directly\n-----------------------\n\n\nYou can use key events outside of a [WearableRecyclerView](/reference/androidx/wear/widget/WearableRecyclerView) to trigger new actions in response to gesture\nevents. Importantly, these gesture events are recognized when a device is in\nactive mode, and they are delivered in the same way as all key events.\n\n\nA class that relates to user interaction, such as a `View` or an\n`Activity`, and that implements\n[KeyEvent.Callback](/reference/android/view/KeyEvent.Callback) can listen to key events that relate to\nwrist gestures just as it can listed to any other key event. The Android framework\ncalls the `View` or `Activity` that has\nfocus with the key events. For gestures, the `onKeyDown()`\nmethod callback is called when gestures occur.\n\n\nAs an example, an app can override predefined actions in a `View`\nor `Activity` that implements `KeyEvent.Callback` as follows: \n\n### Kotlin\n\n```kotlin\nclass GesturesActivity : Activity() {\n\n /* KeyEvent.Callback */\n override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {\n return when (keyCode) {\n KeyEvent.KEYCODE_NAVIGATE_NEXT -\u003e\n // Do something that advances a user View to the next item in an ordered list.\n moveToNextItem()\n KeyEvent.KEYCODE_NAVIGATE_PREVIOUS -\u003e\n // Do something that advances a user View to the previous item in an ordered list.\n moveToPreviousItem()\n else -\u003e {\n // If you did not handle it, let it be handled by the next possible element as determined\n // by the Activity.\n super.onKeyDown(keyCode, event)\n }\n }\n }\n\n /** Shows the next item in the custom list. */\n private fun moveToNextItem(): Boolean {\n ...\n // Return true if handled successfully, otherwise return false.\n return false\n }\n\n /** Shows the previous item in the custom list. */\n private fun moveToPreviousItem(): Boolean {\n ...\n // Return true if handled successfully, otherwise return false.\n return false\n }\n}\n```\n\n### Java\n\n```java\npublic final class GesturesActivity extends Activity {\n\n @Override /* KeyEvent.Callback */\n public boolean onKeyDown(int keyCode, KeyEvent event) {\n switch (keyCode) {\n case KeyEvent.KEYCODE_NAVIGATE_NEXT:\n // Do something that advances a user View to the next item in an ordered list.\n return moveToNextItem();\n case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS:\n // Do something that advances a user View to the previous item in an ordered list.\n return moveToPreviousItem();\n }\n // If you did not handle it, let it be handled by the next possible element as determined by the Activity.\n return super.onKeyDown(keyCode, event);\n }\n\n /** Shows the next item in the custom list. */\n private boolean moveToNextItem() {\n boolean handled = false;\n ...\n // Return true if handled successfully, otherwise return false.\n return handled;\n }\n\n /** Shows the previous item in the custom list. */\n private boolean moveToPreviousItem() {\n boolean handled = false;\n ...\n // Return true if handled successfully, otherwise return false.\n return handled;\n }\n}\n```\n\nBest practices\n--------------\n\n- Review the [KeyEvent](/reference/android/view/KeyEvent) and [KeyEvent.Callback](/reference/android/view/KeyEvent.Callback) pages for the delivery of key events to your `View` and `Activity`.\n- Keep a consistent directional affordance: use \"flick wrist out\" for next and \"flick wrist in\" for previous.\n- Have a touch parallel for a gesture.\n- Provide visual feedback.\n- Don't use a keycode to implement functionality that would be counterintuitive to the rest of the system. For example, don't use `KEYCODE_NAVIGATE_NEXT` to cancel an action or to navigate the left-right axis with flicks.\n- Don't intercept the key events on elements that are not part of the user interface, such as views that are offscreen or partially covered. This is the same as for any key event.\n- Don't reinterpret repeated flick gestures into your own novel gesture. This might conflict with the system's \"shaking the wrist\" gesture.\n- For a view to receive gesture key events, it must have [focus](/reference/android/view/View#attr_android:focusable); see [`\n View.setFocusable()`](/reference/android/view/View#setFocusable(boolean)).\n\n Because gestures are treated as key events,\n they trigger a transition out of \"touch mode\" that might do unexpected\n things. Since users may alternate between using touch and\n gestures, the [`\n View::setFocusableInTouchmode()`](/reference/android/view/View#setFocusableInTouchMode(boolean)) method could be necessary. In some\n cases, it also could be necessary to use\n `setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)` so\n that when focus changes after a change to or from touch mode, your\n intended view gets the focus.\n- Use [requestFocus()](/reference/android/view/View#requestFocus()) and [clearFocus()](/reference/android/view/View#clearFocus()) carefully:\n - When calling `requestFocus()`, make sure it's appropriate for the view to have focus. If the view is offscreen or is covered by another view, surprises can occur when gestures trigger callbacks.\n - The `clearFocus()` method initiates a focus search to find another suitable view. Depending on the view hierarchy, this search might require nontrivial computation. It can also end up assigning focus to a view you don't expect to receive focus.\n- Key events are delivered first to the view with focus in the view\n hierarchy. If the focused view does not handle the event---in other words, it returns\n `false`---the event is not delivered to the parent view, even\n if it can receive focus and has a [`\n KeyListener`](/reference/android/text/method/KeyListener). Rather, the event is delivered to the current activity\n holding the view hierarchy with focus.\n\n Therefore, it might be necessary to\n catch all events at the higher level, then pass relevant codes down.\n Alternatively, you might subclass the activity and override the\n [dispatchKeyEvent(KeyEvent event)](/reference/android/app/Activity#dispatchKeyEvent(android.view.KeyEvent)) method to intercept keys\n when necessary or handle them when they are not handled at\n lower layers."]]