Le modificateur onIndirectPointerGesture permet au composant de recevoir des événements de pointeur indirects de haut niveau, tels que ceux provenant du pavé tactile d'un appareil, et d'y répondre. Utilisez ce modificateur pour capturer et traiter les gestes provenant d'un pavé tactile ou d'une source similaire.
Surface d'API
Votre application peut utiliser quatre rappels pour contrôler la gestion :
onClick: déclenché en cas d'appui ou de clic réussi sans mouvement horizontal significatif.onSwipeForward: déclenché lorsqu'un balayage horizontal dépasse le seuil de distance et de vitesse dans la direction avant.onSwipeBackward: déclenché lorsqu'un balayage horizontal dépasse le seuil de distance et de vitesse dans le sens inverse.Enabled: lorsque ce paramètre est défini surfalse, le modificateur est ignoré et aucun rappel n'est appelé.
Comportement du système pour le balayage et le défilement
Le système utilise un seuil de tolérance tactile pour différencier un clic d'un balayage.
- Si le pointeur se déplace de manière significative pendant un état enfoncé,
onClickest annulé. - Si le pointeur revient en arrière de manière significative pendant un mouvement, le geste de balayage est invalidé.
Exemple : Configurer la gestion des balayages et des clics sur un composant
Le code suivant configure la gestion des balayages et des clics sur un Box sélectionnable :
@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") } }
Points clés concernant le code
onIndirectPointerGesturenécessite d'avoir le focus. Par conséquent,focusTargetest également appliqué pour rendreBoxsélectionnable. Vous pouvez utiliserfocusTargetou un autre modificateur permettant d'activer la sélection, tel quesurface. Sans sélection, le modificateur ne peut pas agir sur les événements de pointeur indirects.- Cet exemple implémente les rappels
onSwipeForwardetonClick. Ainsi, les gestes de balayage et de clic détectés sont interceptés et utilisés, et n'atteignent pas les conteneurs parents. Toutefois, vous pouvez également laisser un rappel spécifique nul pour transmettre un geste à un modificateuronIndirectPointerGesturedans un conteneur parent.