Il modificatore onIndirectPointerGesture consente al componente di ricevere e rispondere
agli eventi di puntatore indiretto di alto livello, ad esempio quelli provenienti dal touchpad
di un dispositivo. Utilizza questo modificatore per acquisire ed elaborare i gesti provenienti da un touchpad o da una fonte simile.
Piattaforma API
Esistono quattro callback che la tua app può utilizzare per controllare la gestione:
onClick: attivato su un tocco o un clic riuscito senza un movimento orizzontale significativo.onSwipeForward: attivato quando uno scorrimento orizzontale supera la soglia di distanza e velocità in avanti.onSwipeBackward: attivato quando uno scorrimento orizzontale supera la soglia di distanza e velocità all'indietro.Enabled: se impostato sufalse, il modificatore viene ignorato e non vengono richiamati callback.
Comportamento del sistema per lo scorrimento e lo scorrimento
Il sistema utilizza una soglia di slop di tocco per distinguere tra un clic e uno scorrimento.
- Se il puntatore si sposta in modo significativo durante uno stato di inattività,
onClickviene annullato. - Se il puntatore torna indietro in modo significativo durante un movimento, il gesto di scorrimento viene invalidato.
Esempio: configurare la gestione di scorrimenti e clic su un componente
Il codice seguente configura la gestione di scorrimenti e clic su un Box focalizzabile:
@Composable @Sampled fun OnIndirectPointerGestureSample() { Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { /* onSwipeForward */ }, onSwipeBackward = { /* onSwipeBackward */ }, onClick = { /* onClick */ }, ) .focusTarget() ) { // App() } }
Punti chiave sul codice
onIndirectPointerGesturerichiede il focus, quindi viene applicato anchefocusTargetper rendere focalizzabile ilBox. Puoi utilizzarefocusTargeto un altro modificatore che abilita il focus, ad esempiosurface. Senza il focus, il modificatore non può agire sugli eventi di puntatore indiretto.- Questo esempio implementa i callback
onSwipeForwardeonClick, quindi i gesti di scorrimento e clic rilevati vengono intercettati e utilizzati e non raggiungono i container principali. Tuttavia, puoi anche lasciare un callback specifico come null per passare un gesto a un modificatoreonIndirectPointerGesturein un container principale. -