Monitorare manualmente l'avanzamento dell'accesso

Il composable PredictiveBackHandler in Jetpack Compose ti consente di intercettare il gesto Indietro e accedere al relativo avanzamento. Puoi reagire al gesto di scorrimento indietro dell'utente in tempo reale, creando animazioni o comportamenti personalizzati in base alla distanza dello scorrimento.

Per utilizzare PredictiveBackHandler, assicurati di utilizzare androidx.activity:activity:1.6.0 o versioni successive.

PredictiveBackHandler fornisce un Flow<BackEventCompat> che emette eventi rappresentanti l'avanzamento del gesto Indietro. Ogni evento contiene informazioni come:

  • progress: un valore float compreso tra 0 e 1 che indica l'avanzamento del gesto di riavvolgimento (0 = gesto avviato, 1 = gesto completato).
  • touchX e touchY: le coordinate X e Y dell'evento tocco.

Lo snippet seguente mostra l'utilizzo di base di 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
    }
}

Esempio: integrazione con un riquadro di navigazione a scomparsa

Questo esempio mostra come implementare un'animazione in-app personalizzata utilizzando PredictiveBackHandler per creare un'interazione fluida con un riquadro di navigazione in risposta ai gesti di ritorno in JetLagged:

Figura 5. Riquadro di navigazione con supporto di Indietro predittivo.

In questo esempio, PredictiveBackHandler viene utilizzato per:

  • Monitora l'avanzamento del gesto Indietro.
  • Aggiorna il translationX del riquadro in base all'avanzamento del gesto.
  • Usa un velocityTracker per aprire o chiudere dolcemente il riquadro in base alla velocità del gesto quando il gesto viene completato o annullato.