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
VibrationEffectstandar. 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.