קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
רכיב ה-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 startedtry{progress.collect{backEvent->
// code for progressboxScale=1F-(1F*backEvent.progress)}// code for completionboxScale=0F}catch(e:CancellationException){// code for cancellationboxScale=1Fthrowe}}
בדוגמה הזו אפשר לראות איך מטמיעים אנימציה מותאמת אישית באפליקציה באמצעות PredictiveBackHandler כדי ליצור אינטראקציה חלקה עם מגירת ניווט בתגובה לתנועות החלקה אחורה ב-JetLagged:
איור 5. חלונית הזזה לניווט עם תמיכה בחיזוי החזרה.
בדוגמה הזו, נעשה שימוש ב-PredictiveBackHandler כדי:
מעקב אחרי ההתקדמות של התנועה לחזרה אחורה.
מעדכנים את translationX של מגירת הצד בהתאם להתקדמות המחווה.
משתמשים ב-velocityTracker כדי לפתוח או לסגור את המגירה בצורה חלקה על סמך מהירות התנועה כשמבצעים את התנועה או מבטלים אותה.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-24 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-08-24 (שעון UTC)."],[],[],null,["# Access progress manually\n\nThe [`PredictiveBackHandler`](https://developer.android.com/reference/kotlin/androidx/activity/compose/PredictiveBackHandler) composable in Jetpack Compose lets you\nintercept the back gesture and access its progress. You can react to the user's\nback gesture in real-time, creating custom animations or behaviors based on how\nfar the user swipes.\n\nTo use the `PredictiveBackHandler`, ensure you are using\n`androidx.activity:activity:1.6.0` or higher.\n\n`PredictiveBackHandler` provides a `Flow\u003cBackEventCompat\u003e` that emits events\nrepresenting the progress of the back gesture. Each event contains information\nsuch as:\n\n- `progress`: A float value between 0 and 1 indicating the progress of the back gesture (0 = gesture started, 1 = gesture completed).\n- `touchX` and `touchY`: The X and Y coordinates of the touch event.\n\nThe following snippet shows basic usage of `PredictiveBackHandler`:\n\n\n```kotlin\nPredictiveBackHandler(true) { progress: Flow\u003cBackEventCompat\u003e -\u003e\n // code for gesture back started\n try {\n progress.collect { backEvent -\u003e\n // code for progress\n boxScale = 1F - (1F * backEvent.progress)\n }\n // code for completion\n boxScale = 0F\n } catch (e: CancellationException) {\n // code for cancellation\n boxScale = 1F\n throw e\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt#L122-L136\n```\n\n\u003cbr /\u003e\n\nExample: Integrate with a navigation drawer\n-------------------------------------------\n\nThis example demonstrates how to implement a custom in-app animation using `PredictiveBackHandler` to create a smooth interaction with a navigation\ndrawer in response to back gestures in [JetLagged](https://github.com/android/compose-samples/blob/main/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt):\n**Figure 5.** Navigation drawer with predictive back support.\n\nIn this example, `PredictiveBackHandler` is used to:\n\n- Track the progress of the back gesture.\n- Update the `translationX` of the drawer based on the gesture progress.\n- Use a `velocityTracker` to smoothly open or close the drawer based on the gesture velocity when the gesture is completed or canceled."]]