Accéder manuellement à la progression

Le composable PredictiveBackHandler de Jetpack Compose vous permet d'intercepter le geste Retour et d'accéder à sa progression. Vous pouvez réagir au geste Retour de l'utilisateur en temps réel, en créant des animations ou des comportements personnalisés en fonction de la distance balayée par l'utilisateur.

Pour utiliser PredictiveBackHandler, assurez-vous d'utiliser androidx.activity:activity:1.6.0 ou une version ultérieure.

PredictiveBackHandler fournit un Flow<BackEventCompat> qui émet des événements représentant la progression du geste Retour. Chaque événement contient des informations telles que :

  • progress : valeur flottante comprise entre 0 et 1 indiquant la progression du geste de retour (0 = geste commencé, 1 = geste terminé).
  • touchX et touchY : coordonnées X et Y de l'événement tactile.

L'extrait de code suivant montre l'utilisation de base de PredictiveBackHandler :

PredictiveBackHandler(true) { progress: Flow<BackEventCompat> ->
    // code for gesture back started
    try {
        progress.collect { backEvent ->
            // code for progress
            boxScale = 1F - (1F * backEvent.progress)
        }
        // code for completion
        boxScale = 0F
    } catch (e: CancellationException) {
        // code for cancellation
        boxScale = 1F
        throw e
    }
}

Exemple : Intégrer à un panneau de navigation

Cet exemple montre comment implémenter une animation personnalisée dans l'application à l'aide de PredictiveBackHandler pour créer une interaction fluide avec un panneau de navigation en réponse aux gestes de retour dans JetLagged :

Figure 5 : Panneau de navigation avec prise en charge de la prévisualisation du Retour.

Dans cet exemple, PredictiveBackHandler est utilisé pour :

  • Suivre la progression du geste Retour
  • Mettez à jour le translationX du panneau latéral en fonction de la progression du geste.
  • Utilisez un velocityTracker pour ouvrir ou fermer le panneau de manière fluide en fonction de la vitesse du geste lorsque celui-ci est terminé ou annulé.