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

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

כדי להשתמש ב-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
        throw e
    }
}

דוגמה: שילוב עם חלונית הזזה לניווט

בדוגמה הבאה מוסבר איך להטמיע אנימציה מותאמת אישית בתוך האפליקציה באמצעות PredictiveBackHandler כדי ליצור אינטראקציה חלקה עם חלונית הזזה לניווט בתגובה לתנועות חזרה ב-JetLagged:

איור 5. חלונית הזזה לניווט עם תמיכה בחיזוי החזרה.

בדוגמה הזו, PredictiveBackHandler משמש כדי:

  • עוקבים אחרי ההתקדמות של תנועת החזרה.
  • מעדכנים את ה-translationX של חלונית ההזזה בהתאם להתקדמות התנועה.
  • משתמשים ב-velocityTracker כדי לפתוח או לסגור את חלונית ההזזה בצורה חלקה, בהתאם למהירות התנועה כשהתנועה מסתיימת או מבוטלת.