Etkinliklere dokunsal geri bildirim ekleme

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.

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, HapticFeedbackConstantsView 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.