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

רכיב ה-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
        throw e
    }
}

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

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

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

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

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