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 mais recente.
O PredictiveBackHandler fornece um Flow<BackEventCompat> que emite eventos
representando o progresso do gesto de volta. 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).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 em JetLagged:
Neste exemplo, PredictiveBackHandler é usado para:
- Acompanhe o progresso do gesto de volta.
- 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.