Một trong những trường hợp sử dụng cơ bản nhất của xúc giác là đưa ra phản hồi cho người dùng tương tác. Bộ chọn giờ, phím nhấn trên bàn phím ảo và văn bản lựa chọn là ví dụ phổ biến về các trường hợp sử dụng hợp lý đối với phản hồi xúc giác. Để biết thêm thông tin về thời điểm và cách thức áp dụng phản hồi xúc giác, đọc Nguyên tắc thiết kế về xúc giác.
Trang này mô tả ba cách cung cấp phản hồi xúc giác.
- Sử dụng
View
(nên dùng). Đây là phương pháp dựa trên hành động, có khả năng hỗ trợ rộng nhất và không yêu cầu quyềnVIBRATE
. - Sử dụng
VibrationEffect
được xác định trước. Phương pháp này linh hoạt hơn, nhưng có một số hạn chế. - Sử dụng tính năng kết hợp nâng cao với dữ liệu gốc. Chiến dịch này là phương pháp mới hơn và linh hoạt hơn, nhưng yêu cầu thiết bị cụ thể của Google.
Các phương thức này sử dụng dữ liệu gốc được xác định ở cấp thiết bị để cung cấp chất lượng cao ý kiến phản hồi được điều chỉnh cho phù hợp với thiết bị.
Tất cả các phương thức phản hồi xúc giác đều tuân theo chế độ cài đặt phản hồi chạm của người dùng bằng cách mặc định.
Sử dụng các thành phần View
để tạo phản hồi xúc giác
Sử dụng phương thức View.performHapticFeedback
để tạo phản hồi xúc giác. Chiến lược phát hành đĩa đơn
hằng số xúc giác do HapticFeedbackConstants
xác định tập trung vào
chức năng trong ứng dụng, chứ không phải loại hiệu ứng xúc giác được thực hiện.
Cách triển khai cơ bản có thể khác nhau tuỳ thuộc vào thiết bị và phần cứng nhưng ứng dụng chỉ cần xem xét loại phản hồi để đưa ra trong ngữ cảnh cụ thể. Bạn có thể bật công nghệ xúc giác bằng cách tập trung vào chức năng cho các lượt tương tác tương tự. Người dùng học cách liên kết các ý nghĩa khác nhau thành các cảm giác xúc giác khác nhau theo thời gian.
Điều kiện tiên quyết: Bật phản hồi xúc giác
Miễn là View
hiển thị, phản hồi xúc giác có thể được sử dụng cho các sự kiện của đối tượng này.
Một số sự kiện, chẳng hạn như nhấn và giữ, có xúc giác mặc định được kích hoạt nếu
trình nghe trên khung hiển thị sẽ xử lý sự kiện (trả về true
).
View
trên Android có thể tắt phản hồi xúc giác bằng cách đặt
View.hapticFeedbackEnabled
vào false
. Vô hiệu hoá thuộc tính này
sẽ dẫn đến phản hồi mặc định.
Phương thức performHapticFeedback
cũng tuân theo chế độ cài đặt hệ thống
HAPTIC_FEEDBACK_ENABLED
, cho phép người dùng có thể tắt các ứng dụng đó
cho toàn bộ hệ thống.
Không giống như các API xúc giác khác, sử dụng HapticFeedbackConstants
với View
không yêu cầu quyền VIBRATE
.
Chọn một HapticFeedbackConstant
Khi sử dụng các thành phần View
với HapticFeedbackConstants
, bạn không cần
để đánh giá khả năng hỗ trợ cụ thể của thiết bị, vì các hằng số này sẽ có thành phần dự phòng
nếu cần. Điểm cần cân nhắc duy nhất là cấp SDK của
hằng số.
Ví dụ 1: Nhấn phím
Đây là ví dụ về cách thêm phản hồi xúc giác vào phương thức nhập bằng cách chạm trong View
bằng trình nghe cảm ứng. Các hiệu ứng mô phỏng cảm giác nhấn xuống
rồi thả nút ra.
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; } }
Ví dụ 2: Nút Gửi
Các trường hợp sử dụng phản hồi xúc giác không chỉ mô phỏng tương tác vật lý với
thiết bị. Các cụm từ này cũng có thể được dùng để truyền tải ý nghĩa trừu tượng. Ví dụ:
kỳ vọng chung đối với một
Hiệu ứng CONFIRM
là
rung nhẹ và ngắn trong khi
REJECT
có thể là
phản hồi mạnh hơn để báo hiệu không thành công. Điều này được minh hoạ trong
ví dụ về nút gửi ý kiến phản hồi.
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); } });
Sử dụng VibrationEffect
được xác định trước để tạo phản hồi xúc giác
Phương pháp sử dụng dựa trên View
sẽ tập trung vào hoạt động tương tác của người dùng. Đó là
được ưu tiên sử dụng để đảm bảo tính nhất quán trên toàn hệ thống. Tuy nhiên, tùy chọn nhắm mục tiêu cụ thể
API VibrationEffect
cũng có thể được gọi để có phản hồi xúc giác tuỳ chỉnh
các hiệu ứng.
Các hiệu ứng được xác định trước hiện có dưới dạng VibrationEffect
hằng số và có thể là
đã kiểm tra hỗ trợ và phát bằng dịch vụ Vibrator
như minh hoạ trong
các ví dụ sau.
Tìm hiểu khả năng hỗ trợ thiết bị của các API VibrationEffect
Trong sử dụng cơ bản, sẽ không cần kiểm tra sự hỗ trợ của từng cá nhân
Các API VibrationEffect
. Các API như Vibrator.areEffectsSupported
và Vibrator.areAllEffectsSupported
được dùng để xác định xem thiết bị có
cách triển khai tuỳ chỉnh của hằng số. Nếu hiệu ứng tuỳ chỉnh không
hiện tại, ứng dụng của bạn vẫn có thể chạy các hiệu ứng và sử dụng
một nền tảng do nền tảng xác định
triển khai dự phòng.
Để biết thêm thông tin, hãy xem phần Được xác định trước
VibrationEffect
.
Điều kiện tiên quyết: Tải Bộ rung và quyền VIBRATE
Bạn có thể phát hầu hết các chế độ rung bằng dịch vụ Vibrator
. Dịch vụ này có thể tải được
như sau:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
Ứng dụng cần có
Quyền VIBRATE
theo thứ tự
để rung thiết bị bằng dịch vụ này. Bạn có thể thêm quyền vào
tệp kê khai ứng dụng:
<uses-permission android:name="android.permission.VIBRATE"/>
Phát một VibrationEffect
được xác định trước
Bạn có thể chuẩn bị các hiệu ứng được xác định trước bằng cách sử dụng VibrationEffect.createPredefined
,
sau đó phát bằng một trong các phương thức vibrate
trên Vibrator
.
Ví dụ này phát hiệu ứng Nhấp chuột.
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));
Sử dụng thành phần kết hợp nâng cao với dữ liệu gốc
API VibrationEffect.Composition
cung cấp thêm khả năng để
phản hồi xúc giác. Tuy nhiên, không giống như hiệu ứng, những dữ liệu gốc này không có
dự phòng ở cấp hệ thống, tức là cần phải chú ý đến
dữ liệu gốc và các tính năng khác mà thiết bị hỗ trợ.
Việc sử dụng các API này sẽ được thảo luận chi tiết hơn trong Tạo hiệu ứng xúc giác tuỳ chỉnh.