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

تتيح لك العنصر القابل للتجميع 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
    }
}

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

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

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

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

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