W Jetpack Compose komponent PredictiveBackHandler
umożliwia przechwytywanie gestu wstecz i dostęp do jego postępów. Możesz reagować na gesty użytkownika w czasie rzeczywistym, tworząc niestandardowe animacje lub zachowania na podstawie tego, jak daleko użytkownik przesuwa palcem.
Aby korzystać z funkcji PredictiveBackHandler
, musisz mieć zainstalowaną wersję androidx.activity:activity:1.6.0
lub nowszą.
PredictiveBackHandler
udostępnia Flow<BackEventCompat>
, który emituje zdarzenia reprezentujące postępy w wykonaniu gestu wstecz. Każde zdarzenie zawiera takie informacje jak:
progress
: wartość zmiennoprzecinkowa od 0 do 1 wskazująca postęp gestu wstecz (0 = gest rozpoczęty, 1 = gest zakończony).touchX
itouchY
: współrzędne X i Y zdarzenia dotyku.
Ten fragment kodu pokazuje podstawowe użycie funkcji 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 } }
Przykład: integracja z panelem nawigacji
Ten przykład pokazuje, jak za pomocą PredictiveBackHandler
wdrożyć niestandardową animację w aplikacji, aby zapewnić płynną interakcję z menu nawigacyjnego w odpowiedzi na gesty wstecz w aplikacji JetLagged:
W tym przykładzie PredictiveBackHandler
służy do:
- Śledź postępy gestu wstecz.
- Zaktualizuj
translationX
szuflady na podstawie postępu gestu. - Użyj
velocityTracker
, aby płynnie otworzyć lub zamknąć szufladę w zależności od prędkości gestu, gdy gest zostanie zakończony lub anulowany.