Pengubah onIndirectPointerGesture memungkinkan komponen menerima dan merespons
peristiwa pointer tidak langsung tingkat tinggi, seperti yang berasal dari touchpad
perangkat. Gunakan pengubah ini untuk merekam dan memproses gestur yang berasal dari
touchpad atau sumber serupa.
Platform API
Ada empat callback yang dapat digunakan aplikasi Anda untuk mengontrol penanganan:
onClick: Dipicu saat ketukan atau klik berhasil tanpa gerakan horizontal yang signifikan.onSwipeForward: Dipicu saat geser horizontal melebihi nilai minimum jarak dan kecepatan ke arah depan.onSwipeBackward: Dipicu saat geser horizontal melebihi jarak dan nilai minimum kecepatan dalam arah mundur.Enabled: Jika disetel kefalse, pengubah akan diabaikan dan tidak ada callback yang dipanggil.
Perilaku sistem untuk menggeser dan men-scroll
Sistem menggunakan nilai toleransi sentuh untuk membedakan antara klik dan geser.
- Jika penunjuk bergerak secara signifikan selama status turun,
onClickakan dibatalkan. - Jika kursor bergerak mundur secara signifikan selama gerakan, gestur geser dibatalkan.
Contoh: Menyiapkan penanganan untuk geser dan klik pada komponen
Kode berikut menyiapkan penanganan untuk geser dan klik pada Box yang dapat difokuskan:
@Composable @Sampled fun OnIndirectPointerGestureSample() { Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { /* onSwipeForward */ }, onSwipeBackward = { /* onSwipeBackward */ }, onClick = { /* onClick */ }, ) .focusTarget() ) { // App() } }
Poin penting tentang kode
onIndirectPointerGesturememerlukan fokus, sehinggafocusTargetjuga diterapkan untuk membuatBoxdapat difokuskan. Anda dapat menggunakanfocusTargetatau pengubah lain yang mengaktifkan fokus sepertisurface. Tanpa fokus, pengubah tidak dapat bertindak pada peristiwa penunjuk tidak langsung.- Contoh ini mengimplementasikan callback
onSwipeForwarddanonClick, sehingga gestur geser dan klik yang terdeteksi akan dicegat dan digunakan, serta tidak menjangkau penampung induk. Namun, Anda juga dapat membiarkan callback tertentu bernilai null untuk meneruskan gestur ke pengubahonIndirectPointerGesturedalam penampung induk. -