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

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