Salah satu kasus penggunaan paling dasar untuk haptik adalah memberikan masukan ke interaksi pengguna. Pemilih waktu, penekanan tombol pada keyboard virtual, dan pemilihan teks adalah contoh umum kasus penggunaan yang baik untuk respons haptik. Untuk informasi selengkapnya tentang kapan dan cara menerapkan haptic, baca Prinsip desain haptic.
Halaman ini menjelaskan tiga cara untuk memberikan respons haptik.
- Gunakan
View
(direkomendasikan). Pendekatan ini berorientasi pada tindakan, memiliki dukungan terluas, dan tidak memerlukan izinVIBRATE
. - Gunakan
VibrationEffect
standar. Pendekatan ini memiliki lebih banyak fleksibilitas, tetapi dengan beberapa kompromi. - Menggunakan komposisi lanjutan dengan primitif. Metode ini lebih baru dan bahkan lebih fleksibel, tetapi memerlukan dukungan perangkat tertentu.
Metode ini menggunakan primitif yang ditentukan di tingkat perangkat untuk memberikan masukan berkualitas tinggi yang disesuaikan dengan perangkat yang ada.
Semua metode respons haptik mengikuti setelan respons sentuh pengguna secara default.
Menggunakan komponen View
untuk menghasilkan respons haptik
Gunakan metode View.performHapticFeedback
untuk menghasilkan respons haptik. Konstanta
haptik yang ditentukan oleh HapticFeedbackConstants
difokuskan pada
fungsinya dalam aplikasi, bukan jenis efek haptik yang dilakukan.
Implementasi yang mendasarinya dapat bervariasi bergantung pada kemampuan perangkat dan hardware, tetapi aplikasi hanya perlu mempertimbangkan jenis masukan yang akan diberikan dalam konteks tertentu. Dengan berfokus pada fungsi, Anda dapat mengaktifkan respons haptik untuk interaksi serupa. Pengguna belajar mengaitkan berbagai makna dengan sensasi haptik yang berbeda dari waktu ke waktu.
Prasyarat: Aktifkan info via sentuhan
Selama View
terlihat, respons haptic dapat digunakan untuk peristiwanya.
Beberapa peristiwa, seperti tekan lama, memiliki haptik default yang dipicu jika
pemroses di tampilan menangani peristiwa (menampilkan true
).
View
Android dapat menonaktifkan respons haptik dengan menetapkan
properti View.hapticFeedbackEnabled
ke false
. Menonaktifkan properti ini
akan menghasilkan masukan default.
Metode performHapticFeedback
juga mematuhi setelan sistem
HAPTIC_FEEDBACK_ENABLED
, yang memungkinkan pengguna berpotensi menonaktifkannya
untuk seluruh sistem.
Tidak seperti API haptik lainnya, penggunaan HapticFeedbackConstants
dengan View
tidak memerlukan izin VIBRATE
.
Memilih HapticFeedbackConstant
Saat menggunakan komponen View
dengan HapticFeedbackConstants
, Anda tidak perlu
mengevaluasi dukungan perangkat tertentu, karena konstanta ini akan memiliki perilaku
fallback jika diperlukan. Satu-satunya pertimbangan adalah level SDK konstanta
yang diinginkan.
Contoh 1: Penekanan tombol
Ini adalah contoh cara menambahkan respons haptik ke input sentuh di View
menggunakan pemroses sentuh. Efek ini menyimulasikan perasaan menekan tombol, lalu melepaskannya.
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; } }
Contoh 2: Tombol kirim
Kasus penggunaan respons haptik tidak hanya menyimulasikan interaksi fisik dengan
perangkat. Istilah ini juga dapat digunakan untuk menyampaikan makna abstrak. Misalnya,
harapan umum untuk
efek CONFIRM
adalah
getaran singkat dan ringan, sedangkan
REJECT
mungkin berupa
masukan yang lebih kuat untuk menandakan kegagalan. Hal ini diilustrasikan dalam contoh
berikut untuk masukan tombol kirim.
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); } });
Menggunakan VibrationEffect
yang telah ditentukan untuk menghasilkan respons haptik
Menggunakan pendekatan berbasis View
akan berfokus pada interaksi pengguna. Hal ini
lebih disukai untuk konsistensi di seluruh sistem. Namun, API
VibrationEffect
tertentu yang telah ditentukan juga dapat dipanggil untuk efek
masukan haptic yang disesuaikan.
Efek standar tersedia sebagai konstanta
VibrationEffect
, dan dapat
diperiksa untuk mengetahui dukungan dan diputar dengan layanan Vibrator
seperti yang ditunjukkan dalam
contoh berikut.
Memahami dukungan perangkat untuk VibrationEffect
API
Dalam penggunaan dasar, Anda tidak perlu memeriksa dukungan untuk setiap
VibrationEffect
API. API seperti Vibrator.areEffectsSupported
dan Vibrator.areAllEffectsSupported
digunakan untuk menentukan apakah perangkat memiliki
implementasi konstanta yang disesuaikan. Jika efek yang disesuaikan tidak
ada, aplikasi Anda tetap dapat memutar efek dan menggunakan penerapan
fallback yang ditentukan platform.
Untuk detail selengkapnya, lihat VibrationEffect
standar.
Prasyarat: Memuat Getaran dan izin VIBRATE
Sebagian besar getaran dapat diputar dengan layanan Vibrator
, yang dapat dimuat
sebagai berikut:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
Aplikasi harus memiliki
izin VIBRATE
agar
dapat membuat perangkat bergetar menggunakan layanan ini. Izin dapat ditambahkan ke
file manifes aplikasi:
<uses-permission android:name="android.permission.VIBRATE"/>
Memutar VibrationEffect
yang telah ditentukan
Efek standar dapat disiapkan menggunakan VibrationEffect.createPredefined
,
lalu diputar menggunakan salah satu metode vibrate
di Vibrator
.
Contoh ini memutar efek Klik.
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));
Menggunakan komposisi lanjutan dengan primitif
VibrationEffect.Composition
API menawarkan kemungkinan tambahan untuk
masukan haptik. Namun, tidak seperti efek, primitif ini tidak memiliki
fallback tingkat sistem, yang berarti bahwa perhatian yang cermat perlu diberikan pada primitif dan kemampuan lain yang didukung oleh perangkat.
Penggunaan API ini dibahas secara lebih mendetail di Membuat Efek Haptik Kustom.