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

تتيح لك الدالة المركّبة 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 لفتح الدرج أو إغلاقه بسلاسة استنادًا إلى سرعة الإيماءة عند اكتمالها أو إلغائها