為活動新增觸覺回饋

為使用者提供觸覺回饋,是最基本的觸覺技術用途之一 互動情形時間挑選器、按下虛擬鍵盤的按鍵和文字 是觸動回饋的常見用途範例如要 深入瞭解套用觸覺技術的時機和方式, 請閱讀 觸覺技術設計原則

本頁說明提供觸覺回饋的三種方式。

這些方法會使用裝置層級定義的基本功能,以提供優質內容 為裝置量身打造意見回饋

所有觸覺回饋方法都會遵循使用者的觸控回饋設定, 預設值。

使用 View 元件產生觸覺回饋

使用 View.performHapticFeedback 方法產生觸覺回饋。 HapticFeedbackConstants 定義的觸覺常數會著重於 應用程式功能,而非所執行的觸覺效果類型。

基本實作方式可能因裝置和硬體而異 但只需考慮想提供什麼意見類型, 在特定情境下所扮演的角色聚焦在功能上,就能增加觸覺回饋 也會針對類似互動提供意見回饋使用者會學習如何將不同的意義建立關聯 隨時切換不同觸覺回饋

必備條件:啟用觸覺回饋

只要 View 顯示在畫面上,即可用於事件的觸覺回饋。 某些事件 (例如長按) 具有預設觸覺回饋,會在 檢視畫面的事件監聽器會處理該事件 (傳回 true)。

Android View 可以藉由設定 對 false 套用 View.hapticFeedbackEnabled 屬性。停用這項資源 會產生預設意見回饋

performHapticFeedback 方法也會遵循系統設定 HAPTIC_FEEDBACK_ENABLED,可讓使用者停用 整個系統。

與其他觸覺技術 API 不同,使用 HapticFeedbackConstants 搭配 View 不需要 VIBRATE 權限。

請選擇HapticFeedbackConstant

搭配 HapticFeedbackConstants 使用 View 元件時,不需要 評估特定裝置是否支援 系統行為唯一需要考量的是 常數。

範例 1:按鍵

以下範例說明如何在 View 中為觸控輸入新增觸覺回饋 追蹤使用者的互動情形這些效果會模擬按壓 按鈕,然後放開。

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:提交按鈕

觸覺回饋的用途不僅是模擬實際與 裝置。也可以用來傳達抽象意義。例如: 一般預期 CONFIRM效果是一種 且 REJECT 可能是 。說明如下 例如提交按鈕意見回饋

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

使用預先定義的 VibrationEffect 產生觸覺回饋

使用View 為基礎的方法關注使用者互動情形,是 以便在整個系統中保持一致不過 您也可以叫用 VibrationEffect API 來提供自訂觸覺回饋 效果。

預先定義的效果目前為 VibrationEffect 常數,且 已確認支援情形,並使用 Vibrator 服務執行,如下所示: 。

瞭解 VibrationEffect API 的裝置支援

基本使用情境中,不需檢查個別人員的支援情形 VibrationEffect API。適用的 API,例如 Vibrator.areEffectsSupportedVibrator.areAllEffectsSupported 用於判斷裝置是否 常數的自訂實作。如果並未自訂特效 您的應用程式仍然可以彈奏效果,並使用平台定義的 備用廣告

詳情請參閱「預先定義 VibrationEffect

必備條件:載入震動器和 VIBRATE 權限

大多數的震動功能可以透過 Vibrator 服務播放 (可載入) 如下所示:

Kotlin

import android.os.Vibrator

val vibrator = context.getSystemService(Vibrator::class.java)

Java

import android.os.Vibrator;

Vibrator vibrator = context.getSystemService(Vibrator.class);

應用程式必須具備 VIBRATE 權限 ,使用這項服務讓裝置震動。您可以將權限新增至 應用程式資訊清單檔案:

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

播放預先定義的VibrationEffect

您可以使用 VibrationEffect.createPredefined、 然後使用其中一個 vibrate 方法,在 Vibrator 上播放。

這個範例會播放「點擊效果」。

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

使用具有原始作品的進階樂曲

VibrationEffect.Composition API 可為 觸覺回饋。不過,與效果不同的 系統層級的備用機制 也就是說,您必須小心 裝置支援的基本功能和其他功能

有關使用方式的詳細說明,請參閱 建立自訂觸覺技術效果