Salah satu kasus penggunaan paling dasar untuk haptic adalah memberikan masukan untuk interaksi pengguna. Alat pilih waktu, penekanan tombol pada keyboard virtual, dan pemilihan teks adalah contoh umum kasus penggunaan yang baik untuk respons haptik. Untuk mengetahui informasi selengkapnya tentang waktu dan cara menerapkan haptic, baca Prinsip desain haptic.
Halaman ini menjelaskan tiga cara untuk memberikan respons haptic.
- Gunakan
View
(direkomendasikan). Pendekatan ini berorientasi pada tindakan, memiliki dukungan terluas, dan tidak memerlukan izinVIBRATE
. - Gunakan
VibrationEffect
yang telah ditentukan. Pendekatan ini memiliki lebih banyak fleksibilitas, tetapi dengan beberapa konsekuensi. - 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 di tangan.
Semua metode respons haptic mengikuti setelan masukan sentuhan pengguna secara default.
Menggunakan komponen View
untuk menghasilkan respons haptik
Gunakan metode View.performHapticFeedback
untuk menghasilkan respons haptic. Konstanta
haptic yang ditentukan oleh HapticFeedbackConstants
berfokus pada
fungsinya dalam aplikasi, bukan jenis efek haptic yang dijalankan.
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 ini, Anda dapat mengaktifkan respons haptic untuk interaksi serupa. Pengguna belajar mengaitkan arti yang berbeda ke sensasi haptik yang berbeda dari waktu ke waktu.
Prasyarat: Aktifkan respons haptic
Selama View
terlihat, respons haptik dapat digunakan untuk peristiwanya.
Beberapa peristiwa, seperti tekan lama, memiliki haptic default yang dipicu jika
pemroses pada tampilan menangani peristiwa (menampilkan true
).
View
Android dapat menonaktifkan respons haptic dengan menetapkan
properti View.hapticFeedbackEnabled
ke false
. Menonaktifkan properti ini
akan menghasilkan masukan default.
Metode performHapticFeedback
juga mengikuti setelan sistem
HAPTIC_FEEDBACK_ENABLED
, yang memungkinkan pengguna menonaktifkannya
untuk seluruh sistem.
Tidak seperti API haptic lainnya, menggunakan HapticFeedbackConstants
dengan View
tidak memerlukan izin VIBRATE
.
Pilih HapticFeedbackConstant
Saat menggunakan komponen View
dengan HapticFeedbackConstants
, Anda tidak perlu
mengevaluasi dukungan perangkat tertentu, karena konstanta ini akan memiliki perilaku
penggantian jika diperlukan. Satu-satunya pertimbangan adalah level SDK dari konstanta
yang diinginkan.
Contoh 1: Tekan tombol
Ini adalah contoh cara menambahkan respons haptic ke input sentuh di View
menggunakan pemroses sentuh. Efeknya 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 masukan sentuhan tidak hanya sekadar menyimulasikan interaksi fisik dengan
perangkat. Mereka juga dapat digunakan untuk menyampaikan makna abstrak. Misalnya,
harapan umum untuk efek
CONFIRM
adalah
getaran singkat dan ringan, sedangkan
REJECT
mungkin menjadi
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); } });
Gunakan VibrationEffect
yang telah ditentukan sebelumnya untuk membuat respons haptik
Menggunakan pendekatan berbasis View
berfokus pada interaksi pengguna. Metode ini
lebih disarankan untuk menjaga konsistensi di seluruh sistem. Namun, API VibrationEffect
tertentu yang telah ditetapkan sebelumnya juga dapat dipanggil untuk efek respons haptic yang disesuaikan.
Efek yang telah ditentukan tersedia sebagai konstanta VibrationEffect
, dan dapat diperiksa untuk mendapatkan dukungan dan dimainkan dengan layanan Vibrator
seperti yang ditunjukkan dalam contoh berikut.
Memahami dukungan perangkat VibrationEffect
API
Dalam penggunaan dasar, Anda tidak perlu memeriksa dukungan setiap
VibrationEffect
API. API seperti Vibrator.areEffectsSupported
dan Vibrator.areAllEffectsSupported
digunakan untuk menentukan apakah perangkat memiliki
implementasi konstanta yang disesuaikan atau tidak. Jika efek yang disesuaikan tidak
ada, aplikasi Anda tetap dapat memutar efek dan menggunakan implementasi penggantian
yang ditentukan platform.
Untuk mengetahui detail selengkapnya, lihat VibrationEffect
.
Prasyarat: Muat izin VIBRATE
dan Vibrator
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 menggetarkan perangkat menggunakan layanan ini. Izin tersebut dapat ditambahkan ke
file manifes aplikasi:
<uses-permission android:name="android.permission.VIBRATE"/>
Memutar VibrationEffect
yang telah ditentukan
Efek yang telah ditentukan 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
respons haptic. Namun, tidak seperti efek, primitif ini tidak memiliki
pengganti tingkat sistem, yang berarti perhatian cermat perlu diberikan pada
primitif dan kemampuan lain yang didukung oleh perangkat.
Penggunaan API ini dibahas secara lebih mendetail dalam Membuat Efek Haptic Kustom.