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 veVIBRATE
izni gerektirmez.- Önceden tanımlanmış bir
VibrationEffect
kullanı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 VibrationEffect
sabitleri 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.