Navigation 3 היא ספריית ניווט חדשה שנועדה לפעול עם Compose. עם Navigation 3, יש לכם שליטה מלאה על מחסנית החזרה, והניווט ליעדים וממנה פשוט כמו הוספה והסרה של פריטים מרשימה. הוא יוצר מערכת ניווט גמישה באפליקציה באמצעות:
- מוסכמות ליצירת מודל של היסטוריית הדפים הקודמים, שבה כל רשומה בהיסטוריית הדפים הקודמים מייצגת תוכן שהמשתמש עבר אליו
- ממשק משתמש שמתעדכן אוטומטית עם שינויים במחסנית החזרה (כולל אנימציות)
- היקף לפריטים במצבור הדפים הקודמים, שמאפשר לשמור את המצב בזמן שפריט נמצא במצבור הדפים הקודמים
- מערכת פריסות דינמיות שמאפשרת להציג כמה יעדים בו-זמנית, ולעבור בין הפריסות בצורה חלקה
- מנגנון שמאפשר לתוכן לתקשר עם פריסת האב שלו (מטא-נתונים)
באופן כללי, יש שתי דרכים להטמיע את Navigation 3:
- מגדירים את התוכן שהמשתמשים יכולים לנווט אליו באפליקציה, כל אחד עם מפתח ייחודי, ומוסיפים פונקציה לפתרון המפתח לתוכן. איך פותרים בעיות שקשורות למפתחות לתוכן
- יוצרים מחסנית חזרה שאליה מועברים מפתחות ומוסרים ממנה כשהמשתמשים עוברים באפליקציה. מידע נוסף זמין במאמר בנושא יצירת מחסנית חזרה.
- אפשר להשתמש ב-
NavDisplayכדי להציג את מחסנית החזרה של האפליקציה. בכל פעם שרשימת הפעולות האחרונות משתנה, הממשק מתעדכן ומציג את התוכן הרלוונטי. איך מציגים את מקבץ התמונות - משנים את
NavDisplayאסטרטגיות הסצנה שלNavDisplayלפי הצורך כדי לתמוך בפריסות דינמיות ובפלטפורמות שונות.
אפשר לראות את קוד המקור המלא של Navigation 3 ב-AOSP.
שיפורים ב-Jetpack Navigation
Navigation 3 הוא שיפור של Jetpack Navigation API המקורי, והוא כולל את השינויים הבאים:
- שילוב פשוט יותר עם חלון הכתיבה
- שליטה מלאה במצבור הפעילויות
- היא מאפשרת ליצור פריסות שיכולות לקרוא יותר מיעד אחד ממחסנית החזרה בו-זמנית, וכך להתאים את עצמן לשינויים בגודל החלון ולקלט אחר.
מידע נוסף על העקרונות של Navigation 3 והבחירות בעיצוב ה-API זמין בפוסט הזה בבלוג.
דוגמאות קוד
מאגר המתכונים מכיל דוגמאות לשימוש באבני הבניין של Navigation 3 כדי לפתור אתגרים נפוצים בניווט.