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 ke arah belakang.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,
onClickdibatalkan. - Jika kursor bergerak mundur secara signifikan selama gerakan, gestur menggeser dibatalkan.
Contoh: Menyiapkan penanganan untuk gesekan dan klik pada komponen
Kode berikut menyiapkan penanganan untuk geser dan klik pada Box yang dapat difokuskan:
@Composable fun OnIndirectPointerGestureSample() { var lastGesture by remember { mutableStateOf("None") } Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { lastGesture = "Forward" }, onSwipeBackward = { lastGesture = "Backward" }, onClick = { lastGesture = "Click" }, ) .focusTarget(), contentAlignment = Alignment.Center, ) { Text("Last Gesture: $lastGesture") } }
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.