İlerleme durumuna manuel olarak erişme

Jetpack Compose'daki PredictiveBackHandler composable'ı, geri gitme hareketini yakalamanıza ve ilerleme durumuna erişmenize olanak tanır. Kullanıcının geri hareketine gerçek zamanlı olarak tepki verebilir, kullanıcının ne kadar kaydırdığına bağlı olarak özel animasyonlar veya davranışlar oluşturabilirsiniz.

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

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

  • progress: Geri hareketinin ilerleme durumunu gösteren 0 ile 1 arasında değişen 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 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
        throw e
    }
}

Örnek: Gezinme çekmecesiyle entegrasyon

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

5.Şekil Tahmin edilen geri gitme desteğiyle gezinme çekmecesi.

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

  • Geri hareketinin ilerleme durumunu izleyin.
  • Çekmecenin translationX özelliğini, hareketin ilerleme durumuna göre güncelleyin.
  • Çekmeceyi, hareket tamamlandığında veya iptal edildiğinde hareket hızına göre sorunsuz bir şekilde açmak ya da kapatmak için velocityTracker kullanın.