Acessar o progresso manualmente

O elemento combinável PredictiveBackHandler no Jetpack Compose permite interceptar o gesto de voltar e acessar o progresso dele. É possível reagir ao gesto de voltar do usuário em tempo real, criando animações ou comportamentos personalizados com base na distância do deslize.

Para usar o PredictiveBackHandler, use a versão androidx.activity:activity:1.6.0 ou mais recente.

PredictiveBackHandler fornece um Flow<BackEventCompat> que emite eventos que representam o progresso do gesto de voltar. Cada evento contém informações como:

  • progress: um valor flutuante entre 0 e 1 que indica o progresso do gesto de voltar (0 = gesto iniciado, 1 = gesto concluído).
  • touchX e touchY: as coordenadas X e Y do evento de toque.

O snippet a seguir mostra o uso básico 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
    }
}

Exemplo: integrar com uma gaveta de navegação

Este exemplo demonstra como implementar uma animação personalizada no app usando PredictiveBackHandler para criar uma interação suave com um painel de navegação em resposta a gestos de voltar no JetLagged:

Figura 5. Gaveta de navegação com suporte para volta preditiva.

Neste exemplo, PredictiveBackHandler é usado para:

  • Acompanhar o progresso do gesto de voltar.
  • Atualizar o translationX do painel com base no progresso do gesto.
  • Usar um velocityTracker para abrir ou fechar o painel sem problemas com base na velocidade do gesto quando ele é concluído ou cancelado.