為使用者提供觸覺回饋,是最基本的觸覺技術用途之一 互動情形時間挑選器、按下虛擬鍵盤的按鍵和文字 是觸動回饋的常見用途範例如要 深入瞭解套用觸覺技術的時機和方式, 請閱讀 觸覺技術設計原則:
本頁說明提供觸覺回饋的三種方式。
- 使用
View
(建議)。這種做法以動作為導向 享有最多的支援,不需要VIBRATE
權限。 - 使用預先定義的
VibrationEffect
。 此做法擁有更多彈性,但需要有所取捨。 - 使用進階樂曲和基元。這個 方法,但是使用特定裝置時 聯絡。
這些方法會使用裝置層級定義的基本功能,以提供優質內容 為裝置量身打造意見回饋
所有觸覺回饋方法都會遵循使用者的觸控回饋設定, 預設值。
使用 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.areEffectsSupported
和 Vibrator.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 可為
觸覺回饋。不過,與效果不同的
系統層級的備用機制
也就是說,您必須小心
裝置支援的基本功能和其他功能
有關使用方式的詳細說明,請參閱 建立自訂觸覺技術效果。