Ręczne wyświetlanie postępów

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).
  • touchX i touchY: 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:

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

W tym przykładzie PredictiveBackHandler służy do:

  • śledzenia postępu gestu cofania;
  • aktualizowania translationX panelu na podstawie postępu gestu;
  • używania velocityTracker do płynnego otwierania lub zamykania panelu na podstawie prędkości gestu po jego zakończeniu lub anulowaniu.