View bileşenlerini, önceden tanımlanmış VibrationEffect API'lerini ve VibrationEffect.Builder ile zaman çizelgesine sabitlenmiş kompozisyonları kullanarak Android uygulamalarında dokunsal geri bildirimi uygulama. keywords_public: > Android geliştirme, dokunsal, dokunsal geri bildirim, kullanıcı arayüzü, görünümler, VibrationEffect, View.performHapticFeedback, Vibrator, dokunsal sabitler
Dokunsal teknolojinin en temel kullanım alanlarından biri, kullanıcı etkileşimlerine geri bildirim sağlamaktır. Saat seçiciler, sanal klavyede tuşa basma ve metin seçimi, dokunsal geribildirimin iyi kullanım alanlarına dair yaygın örneklerdir. Dokunsal geri bildirimin ne zaman ve nasıl uygulanacağı hakkında daha fazla bilgi edinmek için Dokunsal geri bildirim tasarım ilkeleri başlıklı makaleyi inceleyin.
Bu sayfada, dokunsal geribildirim sağlamanın üç yolu açıklanmaktadır.
Viewkullanın(önerilir). Bu yaklaşım, harekete yöneliktir, en geniş desteğe sahiptir veVIBRATEiznini gerektirmez.- Önceden tanımlanmış bir
VibrationEffectkullanın. Bu yaklaşım daha fazla esneklik sunsa da bazı dezavantajları vardır. VibrationEffect.Builderile zaman çizelgesine sabitlenmiş kompozisyonlar kullanın. Bu yaklaşım, ön ayarları, zarfları ve diğer titreşim öğelerini yerleşik otomatik yedekleme desteğiyle birlikte bir zaman çizelgesinde sıralamanıza olanak tanıyan en esnek yaklaşımdır.
Bu yöntemler, cihaz düzeyinde tanımlanan temel öğeleri kullanarak elde tutulan cihaza özel yüksek kaliteli geri bildirimler sağlar.
Tüm dokunsal geribildirim yöntemleri, kullanıcının dokunma geribildirimi ayarlarını varsayılan olarak dikkate alır.
Dokunsal geri bildirim oluşturmak için View bileşenlerini kullanma
Dokunsal geribildirim oluşturmak için View.performHapticFeedback yöntemini kullanın. HapticFeedbackConstants tarafından tanımlanan dokunsal sabitler, gerçekleştirilen dokunsal efektin türüne değil, uygulamadaki işlevselliğine odaklanır.
Temel uygulama, cihaza ve donanım özelliklerine göre değişiklik gösterebilir ancak uygulamanın belirli bir bağlamda sağlanacak geri bildirimin türünü dikkate alması yeterlidir. İşlevselliğe odaklanarak benzer etkileşimler için dokunsal geri bildirimi etkinleştirebilirsiniz. Kullanıcılar zaman içinde farklı dokunsal hislere farklı anlamlar atamayı öğrenir.
Ön koşullar: Dokunsal geribildirimi etkinleştirme
View görünür olduğu sürece etkinliklerinde dokunsal geribildirim kullanılabilir.
Dokunma ve basılı tutma gibi bazı etkinliklerde, görünümdeki bir dinleyici etkinliği işlerse (true döndürürse) tetiklenen varsayılan dokunsal geri bildirimler bulunur.
Bir Android View, View.hapticFeedbackEnabled özelliğini false olarak ayarlayarak dokunsal geri bildirimi devre dışı bırakabilir. Bu özellik devre dışı bırakıldığında varsayılan geri bildirim gösterilir.
performHapticFeedback yöntemi, kullanıcının bunları tüm sistem için devre dışı bırakmasına olanak tanıyan HAPTIC_FEEDBACK_ENABLED sistem ayarını da dikkate alır.
Diğer dokunsal API'lerin aksine, HapticFeedbackConstants ile View kullanmak için VIBRATE izni gerekmez.
HapticFeedbackConstant seçin
View bileşenlerini HapticFeedbackConstants ile kullanırken belirli cihaz desteğini değerlendirmeniz gerekmez. Bu sabitler gerekirse yedek davranışa sahip olur. Tek dikkat edilmesi gereken nokta, istenen sabitin SDK düzeyidir.
1. örnek: Tuşa basma
Bu, dokunma işleyicilerini kullanarak View'da dokunmatik girişe dokunsal geribildirim ekleme örneğidir. 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 geribildirim kullanım alanları, cihazla fiziksel etkileşimi simüle etmenin ötesine geçer. Ayrıca soyut bir anlamı aktarmak için de kullanılabilirler. Örneğin, CONFIRM efektinde genel beklenti kısa ve hafif bir titreşimdir. REJECT ise hatayı bildirmek için daha güçlü bir geri bildirim olabilir. Bu durum, aşağıdaki örnekte bir gönder düğmesi geri bildirimi için 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, kullanıcı etkileşimine odaklandığı için sistem genelinde tutarlılık sağlamak amacıyla bu yaklaşımı tercih edin. Ancak özelleştirilmiş dokunsal geribildirim efektleri için belirli önceden tanımlanmış VibrationEffect API'lerini de çağırabilirsiniz.
Önceden tanımlanmış efektler VibrationEffect
sabitler olarak kullanılabilir. Aşağıdaki örneklerde gösterildiği gibi, Vibrator hizmetiyle desteklenip desteklenmediği kontrol edilebilir ve bu hizmetle birlikte kullanılabilir.
VibrationEffect API'lerinin cihaz desteği hakkında bilgi edinme
Temel kullanımda, tek tek VibrationEffect API'lerinin desteğini kontrol etmeniz gerekmez. Cihazda sabitin özelleştirilmiş bir uygulaması olup olmadığını belirlemek için Vibrator.areEffectsSupported ve Vibrator.areAllEffectsSupported gibi API'ler kullanılır. Özelleştirilmiş bir efekt yoksa uygulamanız efektleri oynatmaya ve platform tarafından tanımlanan bir yedek uygulama kullanmaya devam edebilir.
Daha fazla bilgi için Önceden tanımlanmış
VibrationEffect bölümünü inceleyin.
Ön koşullar: Titreşim ve VIBRATE iznini yükleyin
Çoğu titreşim, aşağıdaki şekilde 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ızın, bu hizmeti kullanarak cihazı titreştirmek için VIBRATE izni olmalıdır. Bu izni uygulama manifest dosyasına ekleyebilirsiniz:
<uses-permission android:name="android.permission.VIBRATE"/>
Önceden tanımlanmış bir VibrationEffect oynatma
Önceden tanımlanmış efektler VibrationEffect.createPredefined kullanılarak hazırlanabilir, ardından Vibrator'da vibrate yöntemlerinden biri kullanılarak oynatılabilir.
Bu örnekte bir tıklama efekti çalınıyor.
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));
Kompozisyon oluşturmak için VibrationEffect.Builder kullanma
Android 16'dan (26Q4) itibaren, VibrationEffect.Builder API, zaman çizelgesi boyunca ayrı hazır ayarlar, zarflar ve diğer titreşim öğelerini sıralayarak özel dokunsal geri bildirim oluşturmanın en esnek ve etkileyici yolunu sunar.
Ayrıca, VibrationEffect.Builder ile oluşturulan kompozisyonlar, desteklenen öğelerinde yerleşik otomatik yedekleme desteğine sahiptir.
VibrationEffect.Builder (ve VibrationEffect.Composition API'si) ile dokunsal efektler oluşturma konusu, Özel Dokunsal Efektler Oluşturma başlıklı makalede daha ayrıntılı olarak ele alınmaktadır.