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 que o usuário desliza.
Para usar o PredictiveBackHandler, verifique se você está usando o
androidx.activity:activity:1.6.0 ou mais recente.
O 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).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 menu de navegação
lateral em resposta a gestos de voltar no JetLagged (link em inglês):
Neste exemplo, PredictiveBackHandler é usado para:
- Acompanhe o progresso do gesto de voltar.
- Atualize o
translationXda gaveta com base no progresso do gesto. - Use um
velocityTrackerpara abrir ou fechar o painel de forma suave com base na velocidade do gesto quando ele for concluído ou cancelado.