Terapkan respons haptik di aplikasi Android menggunakan komponen View, API VibrationEffect yang telah ditentukan sebelumnya, dan komposisi yang ditambatkan ke linimasa dengan VibrationEffect.Builder. keywords_public: > Pengembangan Android, teknologi haptik, respons haptik, UI, tampilan, VibrationEffect, View.performHapticFeedback, Vibrator, konstanta haptik
Salah satu kasus penggunaan paling dasar untuk haptik adalah memberikan umpan balik pada interaksi pengguna. Pemilih waktu, penekanan tombol pada keyboard virtual, dan pemilihan teks adalah contoh umum kasus penggunaan yang baik untuk respons haptik. Untuk mengetahui informasi selengkapnya tentang kapan dan cara menerapkan haptik, baca Prinsip desain haptik.
Halaman ini menjelaskan tiga cara untuk memberikan umpan balik haptik.
- Gunakan
View(direkomendasikan). Pendekatan ini berorientasi pada tindakan, memiliki dukungan terluas, dan tidak memerlukan izinVIBRATE. - Gunakan
VibrationEffectstandar. Pendekatan ini lebih fleksibel, tetapi dengan beberapa kompromi. - Gunakan komposisi yang dijangkarkan ke rentang waktu dengan
VibrationEffect.Builder. Pendekatan ini adalah yang paling fleksibel, memungkinkan Anda mengurutkan preset, amplop, dan elemen getaran lainnya di sepanjang linimasa dengan dukungan penggantian otomatis bawaan.
Metode ini menggunakan primitif yang ditentukan di tingkat perangkat untuk memberikan kualitas tinggi masukan yang disesuaikan dengan perangkat yang sedang digunakan.
Semua metode respons haptik secara default mematuhi setelan umpan balik sentuhan pengguna.
Menggunakan komponen View untuk menghasilkan respons haptik
Gunakan metode View.performHapticFeedback untuk menghasilkan respons haptik. Konstanta haptik yang ditentukan oleh HapticFeedbackConstants berfokus pada fungsinya dalam aplikasi, bukan jenis efek haptik yang dilakukan.
Implementasi yang mendasarinya mungkin bervariasi bergantung pada perangkat dan kemampuan 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 respons haptik
Selama View terlihat, respons haptik dapat digunakan untuk peristiwanya.
Beberapa peristiwa, seperti sentuh lama, memiliki haptik default yang dipicu jika
pendengar pada tampilan menangani peristiwa (menampilkan true).
View Android dapat menonaktifkan respons haptik dengan menyetel properti
View.hapticFeedbackEnabled ke false. Menonaktifkan properti ini akan menghasilkan masukan default.
Metode performHapticFeedback juga mematuhi setelan sistem
HAPTIC_FEEDBACK_ENABLED, yang memungkinkan pengguna menonaktifkannya
untuk seluruh sistem.
Tidak seperti API haptik lainnya, penggunaan HapticFeedbackConstants dengan View
tidak memerlukan izin VIBRATE.
Pilih HapticFeedbackConstant
Saat menggunakan komponen View dengan HapticFeedbackConstants, tidak perlu
mengevaluasi dukungan perangkat tertentu, karena konstanta ini akan memiliki perilaku
penggantian jika diperlukan. Satu-satunya pertimbangan adalah tingkat SDK konstanta yang diinginkan.
Contoh 1: Penekanan tombol
Berikut adalah contoh cara menambahkan respons haptik ke input sentuh di View
menggunakan pemroses sentuh. Efek ini mensimulasikan 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 mensimulasikan interaksi fisik dengan perangkat. Simbol juga dapat digunakan untuk menyampaikan makna abstrak. Misalnya, ekspektasi umum untuk efek
CONFIRM adalah getaran
pendek dan ringan, sedangkan
REJECT mungkin berupa
respons 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 sebelumnya untuk menghasilkan respons haptik
Menggunakan pendekatan berbasis View berfokus pada interaksi pengguna, jadi lebih baik gunakan pendekatan ini untuk konsistensi di seluruh sistem. Namun, Anda juga dapat memanggil
API VibrationEffect bawaan tertentu untuk efek
respons haptik yang disesuaikan.
Efek standar tersedia sebagai konstanta VibrationEffect, dan dapat
diperiksa dukungannya dan dimainkan dengan layanan Vibrator seperti yang ditunjukkan dalam
contoh berikut.
Memahami dukungan perangkat untuk API VibrationEffect
Dalam penggunaan dasar, tidak perlu memeriksa dukungan untuk setiap API
VibrationEffect. API seperti Vibrator.areEffectsSupported
dan Vibrator.areAllEffectsSupported digunakan untuk menentukan apakah perangkat memiliki
penerapan konstanta yang disesuaikan. Jika efek yang disesuaikan tidak ada, aplikasi Anda tetap dapat memutar efek dan menggunakan penerapan penggantian yang ditentukan platform.
Untuk mengetahui detail selengkapnya, lihat Standar
VibrationEffect.
Prasyarat: Muat Vibrator 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 Anda harus memiliki izin VIBRATE untuk menggetarkan perangkat menggunakan layanan ini. Anda dapat menambahkan izin ini ke file
manifes aplikasi:
<uses-permission android:name="android.permission.VIBRATE"/>
Memutar VibrationEffect yang telah ditentukan sebelumnya
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 VibrationEffect.Builder untuk membuat komposisi
Mulai Android 16 (K4 2026), API
VibrationEffect.Builder menawarkan cara paling
fleksibel dan ekspresif untuk membuat respons haptik kustom dengan mengurutkan
preset diskret, amplop, dan elemen getaran lainnya di sepanjang linimasa.
Selain itu, komposisi yang dibuat dengan VibrationEffect.Builder memiliki
dukungan penggantian otomatis bawaan di seluruh elemen yang didukungnya.
Penyusunan efek haptic dengan VibrationEffect.Builder (dan
VibrationEffect.Composition API) dibahas lebih mendetail di
Membuat Efek Haptic Kustom.