Ręczne wyświetlanie postępów

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).
  • touchXtouchY: 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:

Rysunek 5. Panel z obsługą przewidywanego przejścia wstecz.

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.