İlerleme durumuna manuel olarak erişme

Jetpack Compose'daki PredictiveBackHandler bileşeni, geri hareketini durdurmanıza ve ilerleme durumuna erişmenize olanak tanır. Kullanıcının geri hareketine anında tepki vererek kullanıcının ne kadar kaydırmasına bağlı olarak özel animasyonlar veya davranışlar oluşturabilirsiniz.

PredictiveBackHandler öğesini kullanmak için androidx.activity:activity:1.6.0 veya daha yeni bir sürüm kullandığınızdan emin olun.

PredictiveBackHandler, geri hareketinin ilerleme durumunu temsil eden etkinlikler yayınlayan bir Flow<BackEventCompat> sağlar. Her etkinlikte aşağıdakiler gibi bilgiler bulunur:

  • progress: Geri hareketinin ilerleme durumunu belirten 0 ile 1 arasında değişen bir kayan nokta değeri (0 = hareket başladı, 1 = hareket tamamlandı).
  • touchX ve touchY: Dokunma etkinliğinin X ve Y koordinatları.

Aşağıdaki snippet'te PredictiveBackHandler işlevinin temel kullanımı gösterilmektedir:

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
    }
}

Örnek: Gezinme çekmecesine entegrasyon

Bu örnekte, JetLagged'de geri hareketlere yanıt olarak gezinme çekmecesinde sorunsuz bir etkileşim oluşturmak için PredictiveBackHandler kullanılarak özel bir uygulama içi animasyonun nasıl uygulanacağı gösterilmektedir:

Şekil 5. Tahmini geri desteğine sahip gezinme çekmecesi.

Bu örnekte PredictiveBackHandler şu amaçlarla kullanılır:

  • Geri hareketinin ilerleme durumunu takip edin.
  • Hareketin ilerleme durumuna göre çekmecenin translationX değerini güncelleyin.
  • Hareket tamamlandığında veya iptal edildiğinde çekmeceyi hareket hızına göre sorunsuz bir şekilde açmak veya kapatmak için velocityTracker simgesini kullanın.