Dokunma teknolojisinin en temel kullanım alanlarından biri, kullanıcı etkileşimlerine geri bildirim sağlamaktır. Zaman seçicileri, sanal klavyede tuş basma ve metin seçimi, dokunsal geri bildirimin iyi kullanım alanlarını gösteren yaygın örneklerdir. Dokunma teknolojisini ne zaman ve nasıl uygulayacağınız hakkında daha fazla bilgi için Dokunma teknolojisi tasarım ilkeleri başlıklı makaleyi okuyun.
Bu sayfada, dokunma geri bildirimi sağlamanın üç yolu açıklanmaktadır.
View(önerilir) kullanın. Bu yaklaşım işlem odaklı, en geniş desteği sunar veVIBRATEizni gerektirmez.- Önceden tanımlanmış bir
VibrationEffectkullanın. Bu yaklaşım daha fazla esneklik sunar ancak bazı dezavantajları da vardır. - Basit öğelerle gelişmiş kompozisyonlar kullanın. Bu yöntem daha yeni ve daha esnektir ancak belirli cihaz desteği gerektirir.
Bu yöntemler, kullanılan cihaza özel yüksek kaliteli geri bildirim sağlamak için cihaz düzeyinde tanımlanan primitifleri kullanır.
Tüm dokunma geri bildirimi yöntemleri varsayılan olarak kullanıcının dokunma geri bildirimi ayarlarına uyar.
Dokunsal geri bildirim oluşturmak için View bileşenlerini kullanma
Dokunsal geri bildirim oluşturmak için View.performHapticFeedback yöntemini kullanın. HapticFeedbackConstants tarafından tanımlanan dokunma sabitleri, uygulanan dokunma etkisinin türüne değil, uygulamadaki işlevlerine odaklanır.
Temel uygulama, cihaza ve donanım özelliklerine bağlı olarak değişiklik gösterebilir ancak uygulamanın yalnızca belirli bir bağlamda sağlanacak geri bildirim türünü dikkate alması gerekir. İşlevselliğe odaklanarak benzer etkileşimler için dokunma geri bildirimini etkinleştirebilirsiniz. Kullanıcılar zaman içinde farklı dokunma hisleriyle farklı anlamları ilişkilendirmeyi öğrenir.
Ön koşullar: Dokunsal geri bildirimi etkinleştirme
View görünür olduğu sürece, bu düğmenin etkinlikleri için dokunsal geri bildirim kullanılabilir.
Uzun basma gibi bazı etkinliklerde, görünümdeki bir dinleyici etkinliği işlerse (true döndürürse) tetiklenen varsayılan dokunma hissi vardır.
Android View, View.hapticFeedbackEnabled mülkünü false olarak ayarlayarak dokunsal geri bildirimi devre dışı bırakabilir. Bu özelliği devre dışı bırakmak varsayılan geri bildirim alınmasına neden olur.
performHapticFeedback yöntemi, sistem ayarını HAPTIC_FEEDBACK_ENABLED da dikkate alır. Bu sayede kullanıcı, ayarları sistem genelinde devre dışı bırakabilir.
Diğer dokunma API'lerinin aksine, HapticFeedbackConstants'ü View ile kullanmak için VIBRATE izni gerekmez.
HapticFeedbackConstant seçme
View bileşenlerini HapticFeedbackConstants ile kullanırken, bu sabitler gerekirse yedek davranışa sahip olacağından belirli cihaz desteğini değerlendirmeye gerek yoktur. Tek dikkat edilmesi gereken nokta, istenen sabitin SDK düzeyidir.
1. Örnek: Tuş basma
Bu örnekte, dokunma dinleyicilerini kullanarak View
dokunma girişine dokunma geri bildirimi ekleme gösterilmektedir. Bu efektler, bir düğmeye basıp bırakma hissini simüle eder.
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
2. Örnek: Gönder düğmesi
Dokunsal geri bildirim kullanım alanları, cihazla fiziksel bir etkileşimi simüle etmenin ötesine geçer. Soyut bir anlamı aktarmak için de kullanılabilirler. Örneğin, CONFIRM efekti için genel beklenti kısa ve hafif bir titreşimdir. REJECT ise hatayı bildirmek için daha güçlü bir geri bildirim olabilir. Bu durum, gönder düğmesi geri bildirimi için aşağıdaki örnekte gösterilmektedir.
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
Dokunsal geri bildirim oluşturmak için önceden tanımlanmış bir VibrationEffect kullanın
View tabanlı yaklaşımı kullanmak, kullanıcı etkileşimine odaklanır. Sistem genelinde tutarlılık için tercih edilir. Ancak özelleştirilmiş dokunma geri bildirimi efektleri için önceden tanımlanmış belirli VibrationEffect API'leri de çağrılabilir.
Önceden tanımlanmış efektler VibrationEffectsabitleri olarak kullanılabilir ve aşağıdaki örneklerde gösterildiği gibi Vibrator hizmetiyle oynatılabilir ve destekleri kontrol edilebilir.
VibrationEffect API'lerinin cihaz desteğini anlama
Temel kullanımda, bireysel VibrationEffect API'lerinin desteklenmesi gerekmez. Cihazın sabit için özelleştirilmiş bir uygulamaya sahip olup olmadığını belirlemek amacıyla Vibrator.areEffectsSupported ve Vibrator.areAllEffectsSupported gibi API'ler kullanılır. Özelleştirilmiş bir efekt yoksa uygulamanız yine de efektleri oynatabilir ve platform tarafından tanımlanan yedek uygulamayı kullanabilir.
Daha fazla bilgi için Önceden tanımlanmışVibrationEffect bölümüne bakın.
Ön koşullar: Titreşim ve VIBRATE iznini yükleyin
Çoğu titreşim, aşağıdaki gibi yüklenebilen Vibrator hizmetiyle oynatılabilir:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
Uygulamanın, bu hizmeti kullanarak cihazı titreştirmek için VIBRATE iznine sahip olması gerekir. İzin, uygulama manifest dosyasına eklenebilir:
<uses-permission android:name="android.permission.VIBRATE"/>
Önceden tanımlanmış bir VibrationEffect oynatma
Önceden tanımlanmış efektler VibrationEffect.createPredefined kullanılarak hazırlanabilir ve ardından Vibrator'teki vibrate yöntemlerinden biri kullanılarak çalınabilir.
Bu örnekte bir Tıklama efekti oynatılır.
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
Basit öğelerle gelişmiş kompozisyonlar kullanma
VibrationEffect.Composition API, dokunma geri bildirimi için ek olanaklar sunar. Ancak efektlerin aksine bu primitiflerin sistem düzeyinde yedek planları yoktur. Bu nedenle, primitiflere ve cihaz tarafından desteklenen diğer özelliklere dikkatle dikkat edilmesi gerekir.
Bu API'lerin kullanımı Özel Dokunsal Etki Oluşturma başlıklı makalede daha ayrıntılı olarak ele alınmıştır.