دسترسی به پیشرفت به صورت دستی

قابلیت PredictiveBackHandler در Jetpack Compose به شما امکان می‌دهد تا حرکت برگشت را رهگیری کرده و به پیشرفت آن دسترسی داشته باشید. می‌توانید به حرکت برگشت کاربر به صورت بلادرنگ واکنش نشان دهید و انیمیشن‌ها یا رفتارهای سفارشی را بر اساس میزان حرکت کاربر ایجاد کنید.

برای استفاده از PredictiveBackHandler ، مطمئن شوید که از androidx.activity:activity:1.6.0 یا بالاتر استفاده می‌کنید.

PredictiveBackHandler یک Flow<BackEventCompat> ارائه می‌دهد که رویدادهایی را منتشر می‌کند که نشان‌دهنده‌ی پیشرفت حرکت برگشت هستند. هر رویداد شامل اطلاعاتی مانند موارد زیر است:

  • progress : یک مقدار اعشاری بین ۰ و ۱ که نشان‌دهنده‌ی پیشرفت حرکت برگشت است (۰ = شروع حرکت، ۱ = تکمیل حرکت).
  • 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 نشان می‌دهد:

شکل ۵. کشوی ناوبری با تکیه‌گاه پشتی پیش‌بینی‌کننده.

در این مثال، PredictiveBackHandler برای موارد زیر استفاده می‌شود:

  • پیشرفت ژست برگشت را پیگیری کنید.
  • بر اساس پیشرفت حرکت، translationX کشو را به‌روزرسانی کنید.
  • از یک velocityTracker برای باز یا بسته کردن روان کشو بر اساس سرعت حرکت، پس از اتمام یا لغو حرکت، استفاده کنید.