O elemento combinável PredictiveBackHandler no Jetpack Compose permite
interceptar o gesto de retorno e acessar o progresso dele. É possível reagir ao gesto de retorno do usuário em tempo real, criando animações ou comportamentos personalizados com base na distância do deslize.
Para usar o PredictiveBackHandler, verifique se você está usando
androidx.activity:activity:1.6.0 ou versões mais recentes.
O PredictiveBackHandler fornece um Flow<BackEventCompat> que emite eventos
representando o progresso do gesto de retorno. Cada evento contém informações como:
progress: um valor de ponto flutuante entre 0 e 1 que indica o progresso do gesto de voltar (0 = gesto iniciado, 1 = gesto concluído).touchXetouchY: 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 gaveta de
navegação em resposta a gestos de retorno no JetLagged:
Neste exemplo, PredictiveBackHandler é usado para:
- Acompanhe o progresso do gesto de retorno.
- Atualize o
translationXda gaveta com base no progresso do gesto. - Use um
velocityTrackerpara abrir ou fechar o gaveteiro de maneira suave com base na velocidade do gesto quando ele é concluído ou cancelado.