Etkinliklere dokunsal geri bildirim ekleme

Dokunma teknolojisinin en temel kullanım alanlarından biri, kullanıcıya etkileşimleridir. Saat seçiciler, sanal klavyede tuşa basma ve metin seçenekleri, dokunsal geribildirimin iyi kullanım alanlarına örnektir. Daha fazla dokunma teknolojisinin ne zaman ve nasıl uygulanacağıyla ilgili bilgiler için, Dokunsal tasarım ilkeleri.

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

Bu yöntemlerde, yüksek kalite sağlamak için cihaz düzeyinde tanımlanmış temel öğeler kullanılır geri bildirim almaktır.

Tüm dokunma teknolojisiyle geri bildirim yöntemleri, kullanıcının dokunmatik geri bildirim ayarlarını varsayılandır.

Dokunsal geribildirim oluşturmak için View bileşenlerini kullanın

Dokunsal geribildirim oluşturmak için View.performHapticFeedback yöntemini kullanın. İlgili içeriği oluşturmak için kullanılan HapticFeedbackConstants tarafından tanımlanan dokunma teknolojisi sabitleri, işlevselliğini değil, sağlanan dokunma teknolojisi efektinin türünü dikkate almamalıdır.

Temel uygulama, cihaza ve donanıma göre değişiklik gösterebilir. ancak uygulamanın yalnızca sunulacak geri bildirim türünü dikkate alması göz atabilirsiniz. İşlevlere odaklanarak dokunma teknolojisini benzer etkileşimler için geri bildirim alırsınız. Kullanıcılar farklı anlamları ilişkilendirmeyi öğrenir farklı dokunma teknolojisinde çalışıyor.

Ön koşullar: Dokunsal geribildirimi etkinleştirin

View görünür olduğu sürece etkinlikleri için dokunsal geribildirim kullanılabilir. Uzun basma gibi bazı etkinliklerde, görünümdeki işleyici etkinliği işler (true değerini döndürür).

Android View, View.hapticFeedbackEnabled mülkünü false öğesine bağlayın. Bu özellik devre dışı bırakılıyor varsayılan geri bildirim sağlar.

performHapticFeedback yöntemi, sistem ayarını da dikkate alır. HAPTIC_FEEDBACK_ENABLED (kullanıcının potansiyel olarak devre dışı bırakmasına olanak tanır) tüm sistem için geçerli.

Diğer dokunma teknolojisi API'lerinin aksine, HapticFeedbackConstants bir View ile kullanılır VIBRATE iznini gerektirmez.

HapticFeedbackConstant seçin

View bileşenlerini HapticFeedbackConstants ile kullanırken gerek yoktur bu sabit değerlerde yedek değer olacağı için belirli cihaz desteğini değerlendirmek lütfen unutmayın. Tek dikkat edilmesi gereken, istenen SDK düzeyidir sabittir.

1. Örnek: Tuşa basma

Bu, View cihazındaki dokunmatik girişe dokunsal geribildirimin nasıl ekleneceğini gösteren bir örnektir. otomatik olarak oluşturabilirsiniz. Efektler, basılı bir kalemin basılı tutma düğmesini seçip bırakın.

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ı, olanak tanır. Ayrıca soyut bir anlamı aktarmak için de kullanılabilir. Örneğin, genel beklentinin CONFIRM efekti: çalışırken kısa ve ışık titreşimi REJECT, daha güçlü geri bildirim sağlar. Bu, aşağıda gösterilmektedir bir örneği inceleyelim.

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 geribildirim oluşturmak için önceden tanımlanmış bir VibrationEffect kullanın

View tabanlı yaklaşımda kullanıcı etkileşimine odaklanılır. Evet tercih edilir. Ancak önceden tanımlanmış Özelleştirilmiş dokunsal geribildirim için VibrationEffect API'ler de çağrılabilir hoşuma gidiyor.

Önceden tanımlanmış efektler VibrationEffect olarak kullanılabilir sabit değerleri içerir ve destek için kontrol edildi ve şurada gösterildiği gibi Vibrator hizmetiyle oynandı: örneklere göz atın.

VibrationEffect API'lerinin cihaz desteğini anlayın

Temel kullanımda, kullanıcı desteğinin kontrol edilmesine gerek VibrationEffect API'leri Vibrator.areEffectsSupported gibi API'ler ve Vibrator.areAllEffectsSupported, cihazda aşağıdakilerin mevcut olup olmadığını belirlemek için kullanılır: sabitin özelleştirilmiş bir uygulamasıdır. Özelleştirilmiş bir efekt uygulamanız yine de efektleri oynayabilir ve yedek uygulama.

Daha fazla ayrıntı için Önceden tanımlanmış VibrationEffect değerleridir.

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

Çoğu titreşim, yüklenebilen Vibrator hizmetiyle oynatılabilir şu şekilde:

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 VIBRATE izni sırayla ve bu hizmeti kullanarak cihazı titreştirmeyin. İzin, uygulama manifest dosyası:

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

Önceden tanımlanmış bir VibrationEffect oynatın

Önceden tanımlanmış efektler VibrationEffect.createPredefined kullanılarak hazırlanabilir daha sonra Vibrator tarihinde vibrate yöntemlerinden biri kullanılarak oynatıldı.

Bu örnekte bir Tıklama etkisi gösterilmektedir.

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));

Temel bileşenlerle gelişmiş besteler kullanma

VibrationEffect.Composition API, aşağıdakiler için ek olanaklar sunar: dokunsal geribildirim. Ancak efektlerin aksine bu temel öğelerin yedekleriyle de etkileşim kurulabilir. Bu da her birinin ve cihazın desteklediği diğer özellikler.

Bu API'lerin kullanımı şu bölümde daha ayrıntılı olarak açıklanmıştır: Özel Dokunsal Efektler Oluşturma.