גישה לסטטוס ההתקדמות באופן ידני

הרכיב ה-composable PredictiveBackHandler ב-Jetpack Compose מאפשר לכם ליירט את תנועת החזרה ולגשת להתקדמות שלה. אתם יכולים להגיב לתנועת החזרה של המשתמש בזמן אמת, וליצור אנימציות או התנהגויות בהתאמה אישית על סמך המרחק שבו המשתמש מחליק.

כדי להשתמש ב-PredictiveBackHandler, צריך לוודא שאתם משתמשים ב-androidx.activity:activity:1.6.0 ואילך.

PredictiveBackHandler מספק Flow<BackEventCompat> שמפיק אירועים שמייצגים את ההתקדמות של תנועת החזרה. כל אירוע מכיל מידע כמו:

  • progress: ערך ממשי (float) בין 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 כדי לפתוח או לסגור את המגירה בצורה חלקה, בהתאם למהירות התנועה כשהתנועה מסתיימת או מבוטלת.