الوصول إلى مستوى التقدّم يدويًا

تتيح لك الدالة المركّبة PredictiveBackHandler في Jetpack Compose اعتراض إيماءة الرجوع والوصول إلى مستوى تقدّمها. يمكنك التفاعل مع إيماءة الرجوع التي ينفّذها المستخدم في الوقت الفعلي، وإنشاء صور متحركة أو سلوكيات مخصّصة استنادًا إلى مدى تمرير المستخدم.

لاستخدام PredictiveBackHandler، تأكَّد من استخدام androidx.activity:activity:1.6.0 أو إصدار أحدث.

توفّر PredictiveBackHandler واجهة Flow<BackEventCompat> تُصدر أحداثًا تمثّل مستوى تقدّم إيماءة الرجوع. يحتوي كل حدث على معلومات مثل:

  • ‫progress: قيمة عائمة بين 0 و1 تشير إلى مستوى تقدّم إيماءة الرجوع (0 = بدء الإيماءة، 1 = اكتمال الإيماءة).
  • ‫touchX وtouchY: إحداثيات X وY لحدث اللمس

يوضّح المقتطف التالي الاستخدام الأساسي لـ 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
    }
}

مثال: الدمج مع لائحة التنقل

يوضّح هذا المثال كيفية تنفيذ صورة متحركة مخصّصة داخل التطبيق باستخدام PredictiveBackHandler لإنشاء تفاعل سلس مع لائحة التنقّل استجابةً لإيماءات الرجوع في JetLagged:

الشكل 5. لائحة التنقل مع ميزة "إيماءة إظهار شاشة الرجوع"

في هذا المثال، يتم استخدام PredictiveBackHandler لإجراء ما يلي:

  • تتبُّع مستوى تقدّم إيماءة الرجوع
  • عدِّل translationX في الدرج استنادًا إلى مستوى تقدّم الإيماءة.
  • استخدِم velocityTracker لفتح الدرج أو إغلاقه بسلاسة استنادًا إلى سرعة الإيماءة عند اكتمال الإيماءة أو إلغائها.