Bazı Wear OS cihazlarda fiziksel bir dönen yan düğme vardır. Kullanıcı düğmeyi çevirdiğinde, uygulamanızın mevcut görünümü yukarı veya aşağı kaydırılır. Bu giriş türüne dönen giriş denir.
Not: Bu kılavuz öncelikli olarak, Görünüm tabanlı kullanıcı arayüzleri kullanarak çevirmeli girişlerin işlenmesiyle ilgilidir. Wear OS için Compose'u kullanarak çevirmeli girişleri işleme hakkında daha fazla bilgi için Compose'da döner giriş başlıklı makaleyi inceleyin.
ScrollView
, ListView
, HorizontalScrollView
ve WearableRecyclerView
gibi birçok kaydırılabilir kapsayıcı, Wear OS'e özel kod gerektirmeden odaklanılan çevirmeli girişleri destekler.
Android 9 (API düzeyi 28) ve sonraki sürümlerde görüntülemeler dolaylı olarak odaklanılmadığından
odak noktasına sahip olmak önemli bir ön koşuldur.
En iyi uygulamalara odaklanın
Ç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 hiyerarşisinde baloncuk oluşturmaz. Odaklı görünüm yoksa veya odaklanmış görünüm View.onGenericMotionEvent()
kaynağından false
değerini döndürürse etkinlik Activity.onGenericMotionEvent()
öğesine gönderilir.
Aşağıda, çevirmeli giriş etkinliklerine yanıt vermeyle ilgili en iyi uygulamalar verilmiştir:
- Varsayılan olarak, bir etkinlik başlatmanın veya bir görünüme dokunmanın, odaklanılabilir olsa bile o etkinliğe odaklanmadığını unutmayın. Görünüm odağınızı vermek için görünümün
<requestFocus />
etiketini kullanması veyaView.requestFocus()
etiketini manuel olarak çağırması gerekir. - Hem
android:focusable="true"
hem deandroid:focusableInTouchMode="true"
özelliğini kullanarak özel kaydırılabilir görünümleri odaklanabilir olarak işaretleyin. - Kaydırılabilir görünümünüz
Activity.onCreate()
tarihinden sonra eklenmişse (örneğin, kullanıcı arayüzünüzü oluşturmadan önce ağ isteğinin bitmesini bekliyorsanız) ekledikten sonrarequestFocus()
numarasını arayın. - Kaydırılabilir görünümünüz başlangıçta
INVISIBLE
veyaGONE
iseVISIBLE
olarak ayarlarkenrequestFocus()
çağrısı yapın. - Etkinliğinizde birden fazla kaydırılabilir görünüm varsa
<requestFocus />
etiketini kullanarak odaklanmak için bir görünüm seçin. İç içe yerleştirilmiş kaydırma, yandaki dönen düğmeyle desteklenmez. - Kullanıcı arayüzünüz, kullanıcı etkileşimde bulunduğunda odak alan başka bir görünüm içeriyorsa (ör.
InputText
), odağı kaybetmesi halinde kullanıcının odağı kaydırılabilir görünüme geri döndürmesi için bir yol sağlayın. Bunun için kaydırılabilir görünüme yapılan dokunuşları dinleyip yanıt olarakrequestFocus()
çağırın.
Özel rotasyon davranışı
Kaydırılabilir görünümünüz, çevirmeli giriş kaydırmasını yerel olarak desteklemiyorsa veya çevirmeli girişinizi kaydırma dışında bir şey için kullanmak istiyorsanız (örneğin, yakınlaştırma/uzaklaştırma veya kadranı çevirme gibi işlemler) kaydırma etkinliklerini kendiniz gerçekleştirebilirsiniz. Görüşe odaklandığınızdan emin olun. Aksi takdirde etkinlikler gerçekleşmez.
Aşağıdaki kod snippet'inde, görünümünüze özel kaydırma eklemek için MotionEvent
, InputDeviceCompat
ve ViewConfigurationCompat
öğelerinin nasıl kullanılacağı gösterilmektedir:
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; } });
Emülatör kullanarak test etme
Wear cihazda çevirmeli giriş kaydırma simülasyonu yapmak için Android Emülatörü kullanın. Projenizi çalıştırmak için emülatörde Wear uygulamanızı başlatın veya yüklemek için bir APK dosyasını emülatöre sürükleyin.
Emülatörde çevirmeli girişi test etmek için:
- SDK yöneticisinden Android Emulator 26.0.3 veya sonraki bir sürümü edinmek için SDK araçları sekmesini kullanın.
- Android Studio'da Araçlar > Android > AVD Manager'ı seçin. API 25 veya sonraki bir sürüme sahip yeni bir Wear cihaz oluşturun.
- Android Studio'dan emülatörü çalıştırın.
- Emülatör araç çubuğunun altındaki üç nokta taşma menüsünü tıklayın. Çevirmeli giriş arayüzünü açmak için yeni pencerede Döner giriş sekmesini tıklayın ve çevirmeli giriş kaydırmayı deneyin.
Aşağıdaki videoda emülatörde çevirmeli giriş gösterilmektedir: