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

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