כדי להפעיל אנימציות של תנועת החזרה לחיזוי, צריך להביע הסכמה לתמיכה בתנועת החזרה לחיזוי. כדי להביע הסכמה, מוסיפים את הערך android:enableOnBackInvokedCallback="true
" לתג <application>
או לתגי <activity>
נפרדים בקובץ AndroidManifest.xml
.
הפעלת אנימציות מערכת שמוגדרות כברירת מחדל
אנימציות המערכת של חזרה למסך הבית, של תנועה בין פעילויות ושל תנועה בין משימות זמינות במכשירים עם Android מגרסה 15 ואילך, באפליקציות שהועברו לממשקי ה-API הנתמכים לטיפול בלחצן החזרה.
- חזרה למסך הבית: החזרת המשתמש למסך הבית.
- בין פעילויות: מעברים בין פעילויות בתוך האפליקציה.
- בין משימות: מעברים בין משימות.
האנימציות האלה מופעלות כברירת מחדל ב-Android מגרסה 15 ואילך. במכשירים עם Android בגרסה 13 או 14, המשתמשים יכולים להפעיל אותם דרך האפשרויות למפתחים.
כדי להשתמש באנימציות המערכת, צריך לעדכן את יחסי התלות של AndroidX ב-Activity
לגרסה 1.6.0 ואילך.
הפעלת חזרה חזוי באמצעות 'ניווט לכתיבה'
כדי להשתמש בתכונה 'חזרה חזותית' בתכונה 'כתיבה בזמן ניווט', צריך לוודא שאתם משתמשים בספרייה navigation-compose
בגרסה 2.8.0 ואילך.
כשמשתמשים מחליקים חזרה, נעשה מעבר אוטומטי בין המסכים בתפריט הניווט:
כשמנווטים, אפשר ליצור מעברים מותאמים אישית באמצעות popEnterTransition
ו-popExitTransition
. כשמחילים את המשתנים האלה על NavHost
, אפשר להגדיר את האנימציה של המסכים 'כניסה' ו'יציאה'. אפשר להשתמש בהם כדי ליצור מגוון אפקטים, כמו שינוי קנה מידה, העלמה או החלקה.
בדוגמה הזו, scaleOut
משמש בתוך popExitTransition
כדי להקטין את המסך היוצא בזמן שהמשתמש מנווט חזרה. בנוסף, הפרמטר transformOrigin
קובע את הנקודה שסביבה מתרחשת אנימציית השינוי בקנה המידה. כברירת מחדל, זוהי נקודת המרכז של המסך (0.5f, 0.5f
). אפשר לשנות את הערך הזה כדי שהשינוי בגודל יתבצע מנקודה אחרת.
NavHost( navController = navController, startDestination = Home, popExitTransition = { scaleOut( targetScale = 0.9f, transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f) ) }, popEnterTransition = { EnterTransition.None }, modifier = modifier, )
הקוד הזה מניב את התוצאה הבאה:
popEnterTransition
ו-popExitTransition
שולטים באנימציות באופן ספציפי כשפותחים את מקבץ האפליקציות הקודם, למשל באמצעות תנועה אחורה. אפשר גם להשתמש ב-enterTransition
וב-exitTransition
כדי להגדיר אנימציות לכניסה וליציאה מרכיבים מורכבים באופן כללי, ולא רק לחזור חזרה חזוי. אם מגדירים רק את enterTransition
ו-exitTransition
, הם משמשים גם לניווט רגיל וגם להוצאה של סטאק הקודמים. עם זאת, השימוש ב-popEnterTransition
וב-popExitTransition
מאפשר ליצור אנימציות נפרדות לניווט לאחור.
שילוב עם מעברים של רכיבים משותפים
מעברים בין רכיבים משותפים מספקים חיבור חזותי חלק בין רכיבים מורכבים עם תוכן משותף, ולרוב משמשים לניווט.
במאמר חזרה חזויה עם רכיבים משותפים מוסבר איך משתמשים ברכיבים משותפים עם 'כתיבה באמצעות הניווט'.
תמיכה בחזרה חזותית חזוי באמצעות רכיבים של Material Compose
רכיבים רבים בספריית Material Compose תוכננו לפעול בצורה חלקה עם תנועות חזרה חזויות. כדי להפעיל אנימציות חזרה חזויות ברכיבים האלה, צריך לכלול בפרויקט את התלות האחרונה ב-Material3 (androidx.compose.material3:material3-*:1.3.0
ואילך).
רכיבי Material שתומכים בחיזוי אנימציה של תנועת החזרה הם:
SearchBar
ModalBottomSheet
ModalDrawerSheet/DismissibleDrawerSheet
ModalNavigationDrawer/DismissibleNavigationDrawer
SearchBar
ו-ModalBottomSheet
מקבלים אנימציה אוטומטית באמצעות תנועות חיזוי של חזרה אחורה. כדי להשתמש ב-ModalNavigationDrawer
, ב-ModalDrawerSheet
, ב-DismissibleDrawerSheet
וב-DismissibleNavigationDrawer
, צריך להעביר את drawerState
ל-composables של תוכן הגיליונות הרלוונטיים.
בדיקת אנימציית התנועה לחזרה אחורה
אם אתם עדיין משתמשים ב-Android 13 או ב-Android 14, תוכלו לבדוק את האנימציה של החזרה למסך הבית.
כדי לבדוק את האנימציה הזו, מבצעים את השלבים הבאים:
- במכשיר, עוברים אל הגדרות > מערכת > אפשרויות למפתחים.
- בוחרים באפשרות חיזוי אנימציה של תנועת החזרה.
- פותחים את האפליקציה המעודכנת ומשתמשים בתנועת החזרה לאחור כדי לראות איך היא פועלת.
במכשירים עם Android מגרסה 15 ואילך, התכונה הזו מופעלת כברירת מחדל.