Wear'da bilek hareketlerini kullanma

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:

Hareket KeyEvent Açıklama
Bileğinizi dışarı doğru çevirin KEYCODE_NAVIGATE_NEXT Bu anahtar kodu bir sonraki öğeye gider.
Bileğinizi içeri doğru çevirin KEYCODE_NAVIGATE_PREVIOUS Bu anahtar kodu önceki öğeye gider.

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.