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çiciler, sanal klavyeye basmak ve metin seçimi, dokunsal geribildirim için iyi kullanım alanlarına örnek olarak verilebilir. Dokunma teknolojisinin ne zaman ve nasıl uygulanacağı hakkında daha fazla bilgi için Dokunsal tasarım ilkeleri konusunu okuyun.

Bu sayfada, dokunsal geribildirim sağlamanın üç yolu açıklanmaktadır.

Bu yöntemler, elinizdeki cihaza göre özelleştirilmiş yüksek kaliteli geri bildirimler sağlamak için cihaz düzeyinde tanımlanan temel öğeleri kullanır.

Tüm dokunsal geri bildirim 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 kullanın

Dokunsal geri bildirim 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şlevlerine odaklanır.

Temel uygulama, cihaz ve donanım özelliklerine bağlı olarak değişiklik gösterebilir ancak uygulamanın yalnızca belirli bir bağlamda sağlamak için geri bildirim türünü dikkate alması gerekir. İşlevselliğe odaklanarak, benzer etkileşimler için dokunmatik geri bildirimi etkinleştirebilirsiniz. Kullanıcılar zamanla farklı dokunsal hislerle farklı anlamları ilişkilendirmeyi öğrenirler.

Ön koşullar: Dokunsal geri bildirimi etkinleştirme

View görünür olduğu sürece ilgili etkinliklerde dokunsal geri bildirim kullanılabilir. Uzun basma gibi bazı etkinlikler, görünümdeki bir işleyici etkinliği işleme alırsa tetiklenen varsayılan dokunma teknolojisine sahiptir (true döndürür).

Android View, View.hapticFeedbackEnabled özelliğini false değerine ayarlayarak dokunsal geri bildirimi devre dışı bırakabilir. Bu özelliğin devre dışı bırakılması varsayılan geri bildirimle sonuçlanır.

performHapticFeedback yöntemi, HAPTIC_FEEDBACK_ENABLED sistem ayarını da dikkate alır. Bu ayar, kullanıcının bu ayarı tüm sistem için devre dışı bırakmasına olanak tanır.

Diğer dokunsal API'lerin aksine, HapticFeedbackConstants öğesini View ile kullanmak için VIBRATE izni gerekmez.

Bir HapticFeedbackConstant seçin

View bileşenlerini HapticFeedbackConstants ile kullanırken belirli cihaz desteğini değerlendirmenize gerek yoktur. Çünkü bu sabit değerler, gerektiğinde yedek davranışı sergileyebilir. Dikkate alınan tek nokta, istenen sabit değerin SDK düzeyidir.

1. Örnek: Tuşa basma

Bu, dokunmatik dinleyicileri kullanarak View içindeki bir dokunma girişine nasıl dokunsal geri bildirim ekleneceğine dair bir örnektir. Efektler, bir düğmeyi basılı tutup 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. Bunlar soyut bir anlam aktarmak için de kullanılabilir. Örneğin, CONFIRM etkisinin genel beklentisi kısa ve hafif titreşimken REJECT, hata sinyalini vermek için daha güçlü bir geri bildirim olabilir. Bu, bir 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 kullanma

View tabanlı yaklaşım, kullanıcı etkileşimine odaklanır. Sistem genelinde tutarlılık için tercih edilir. Bununla birlikte, özelleştirilmiş dokunsal geri bildirim efektleri için önceden tanımlanmış belirli VibrationEffect API'leri de çağrılabilir.

Önceden tanımlanmış efektler VibrationEffect sabit değerleri olarak kullanılabilir. Ayrıca, aşağıdaki örneklerde gösterildiği gibi desteklenmeleri için kontrol edilebilir ve Vibrator hizmetiyle oynatılabilir.

VibrationEffect API'lerinin cihaz desteğini anlama

Temel kullanımda VibrationEffect API'lerinin ayrı ayrı desteklenip desteklenmediğinin kontrol edilmesine gerek yoktur. Vibrator.areEffectsSupported ve Vibrator.areAllEffectsSupported gibi API'ler, cihazda sabit değerin özelleştirilmiş bir şekilde uygulanıp uygulanmadığını belirlemek için kullanılır. Özelleştirilmiş bir efekt yoksa uygulamanız yine de efektleri oynatabilir ve platform tanımlı bir yedek uygulama kullanabilir.

Diğer ayrıntılar için Önceden tanımlanmışVibrationEffect bölümünü inceleyin.

Ön koşullar: Vibratör'ü ve VIBRATE iznini yükleme

Çoğu titreşim Vibrator hizmetiyle oynatılabilir. Bu hizmet aşağıdaki gibi yüklenebilir:

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ştirebilmesi için VIBRATE iznine sahip olması gerekir. Bu izin, uygulama manifest dosyasına eklenebilir:

<uses-permission android:name="android.permission.VIBRATE"/>

Önceden tanımlanmış bir VibrationEffect çal

Önceden tanımlanmış efektler, VibrationEffect.createPredefined ile hazırlanabilir, ardından Vibrator üzerinde vibrate yöntemlerinden biri kullanılarak oynatılabilir.

Bu örnekte bir Tıklama efekti vardı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));

Gelişmiş besteleri temel öğelerle kullanma

VibrationEffect.Composition API, dokunsal geri bildirim için ek olanaklar sunar. Ancak efektlerden farklı olarak bu temel öğelerin sistem düzeyinde yedekleri yoktur. Bu nedenle, cihaz tarafından desteklenen temel öğelere ve diğer özelliklere dikkat edilmesi gerekir.

Bu API'lerin kullanımı, Özel Dokunsal Efektler Oluşturma bölümünde daha ayrıntılı olarak ele alınmaktadır.