Kompozycja PredictiveBackHandler w Jetpack Compose umożliwia
przechwytywanie gestu cofania i uzyskiwanie dostępu do jego postępu. Możesz reagować na gest cofania użytkownika w czasie rzeczywistym, tworząc niestandardowe animacje lub zachowania na podstawie tego, jak daleko użytkownik przesunie palcem.
Aby używać PredictiveBackHandler, upewnij się, że używasz biblioteki androidx.activity:activity:1.6.0 lub nowszej.
PredictiveBackHandler udostępnia Flow<BackEventCompat>, która emituje zdarzenia
reprezentujące postęp gestu cofania. Każde zdarzenie zawiera takie informacje jak:
progress: wartość zmiennoprzecinkowa od 0 do 1 wskazująca postęp gestu cofania (0 = rozpoczęcie gestu, 1 = zakończenie gestu).touchXitouchY: współrzędne X i Y zdarzenia dotknięcia.
Poniższy fragment kodu pokazuje podstawowe użycie 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 } }
Przykład: integracja z panelem nawigacyjnym
Ten przykład pokazuje, jak zaimplementować niestandardową animację w aplikacji za pomocą PredictiveBackHandler, aby utworzyć płynną interakcję z panelem nawigacyjnym w odpowiedzi na gesty cofania w JetLagged:
W tym przykładzie PredictiveBackHandler służy do:
- śledzenia postępu gestu cofania;
- aktualizowania
translationXpanelu na podstawie postępu gestu; - używania
velocityTrackerdo płynnego otwierania lub zamykania panelu na podstawie prędkości gestu po jego zakończeniu lub anulowaniu.