Le modificateur onIndirectPointerGesture permet au composant de recevoir et de répondre
aux événements de pointeur indirect de haut niveau, tels que ceux provenant du pavé tactile d'un appareil. 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é lors d'un appui ou d'un clic réussi sans mouvement horizontal significatif.onSwipeForward: déclenché lorsqu'un balayage horizontal dépasse le seuil de distance et de vitesse dans le sens avant.onSwipeBackward: déclenché lorsqu'un balayage horizontal dépasse le seuil de distance et de vitesse dans le sens arrière.Enabled: lorsque la valeur est définie surfalse, le modificateur est ignoré et aucun rappel n'est appelé.
Comportement du système pour les balayages et le défilement
Le système utilise un seuil de tolérance au toucher pour faire la différence entre un clic et un balayage.
- Si le pointeur se déplace de manière significative pendant un état d'inactivité,
onClickest annulé. - Si le pointeur revient en arrière de manière significative pendant un mouvement, le geste de balayage n'est pas validé.
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 pouvant être ciblé :
@Composable @Sampled fun OnIndirectPointerGestureSample() { Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { /* onSwipeForward */ }, onSwipeBackward = { /* onSwipeBackward */ }, onClick = { /* onClick */ }, ) .focusTarget() ) { // App() } }
Points essentiels concernant le code
onIndirectPointerGesturenécessite un focus. Par conséquent,focusTargetest également appliqué pour rendre leBoxciblable. Vous pouvez utiliserfocusTargetou un autre modificateur permettant le focus, tel quesurface. Sans focus, le modificateur ne peut pas agir sur les événements de pointeur indirect.- Cet exemple implémente les rappels
onSwipeForwardetonClick. Par conséquent, 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. -