ניווט 3

‫Navigation 3 היא ספריית ניווט חדשה שנועדה לעבוד עם Compose. בספרייה Navigation 3 יש לכם שליטה מלאה על מקבץ פעילויות קודמות (back stack), ואתם יכולים לנווט ליעדים וממנה על ידי הוספה והסרה של פריטים מרשימה. הוא יוצר מערכת ניווט גמישה באפליקציה באמצעות:

  • מוסכמות למידול של מקבץ פעילויות קודמות (back stack), שבה כל רשומה במקבץ הפעילויות הקודמות מייצגת תוכן שהמשתמש עבר אליו
  • ממשק משתמש שמתעדכן אוטומטית עם שינויים במקבץ הפעילויות הקודמות (back stack) (כולל אנימציות)
  • היקף לפריטים במחסנית החזרה, שמאפשר לשמור את המצב בזמן שפריט נמצא במחסנית החזרה
  • מערכת פריסות דינמיות שמאפשרת להציג כמה יעדים בו-זמנית, ולעבור בין הפריסות בצורה חלקה
  • מנגנון שמאפשר לתוכן לתקשר עם פריסת האב שלו (מטא-נתונים)

באופן כללי, יש שתי דרכים להטמיע את Navigation 3:

  1. מגדירים את התוכן שהמשתמשים יכולים לנווט אליו באפליקציה, כל אחד עם מפתח ייחודי, ומוסיפים פונקציה לפתרון המפתח לתוכן. תוכלו לקרוא מידע נוסף במאמר בנושא פתרון בעיות שקשורות למפתחות לגישה לתוכן.
  2. יוצרים מקבץ פעילויות קודמות (back stack) שאליה מפתחות נדחפים ומוסרים ממנה כשהמשתמשים עוברים בין מסכים באפליקציה. מידע נוסף על יצירת מקבץ פעילויות קודמות (back stack)
  3. אפשר להשתמש ב-NavDisplay כדי להציג את מקבץ הפעילויות הקודמות (back stack) של האפליקציה. בכל פעם שמשתנה מחסנית החזרה, הממשק מתעדכן ומציג תוכן רלוונטי. מידע נוסף מופיע במאמר הצגת מקבץ פעילויות קודמות (back stack).
  4. לשנות את אסטרטגיות הסצנה שלNavDisplay לפי הצורך כדי לתמוך בפריסות אדפטיביות ובפלטפורמות שונות.
  5. תמיכה בקישורי עומק לניווט ישירות ליעדים.

אפשר לראות את קוד המקור המלא של Navigation 3 ב-AOSP.

שיפורים ב-Jetpack Navigation

‫Navigation 3 משפר את Jetpack Navigation API המקורי בדרכים הבאות:

  • שילוב פשוט יותר עם Compose
  • שליטה מלאה במקבץ פעילויות קודמות (back stack)
  • היא מאפשרת ליצור פריסות שיכולות לקרוא יותר מיעד אחד ממחסנית החזרה בו-זמנית, וכך להתאים את עצמן לשינויים בגודל החלון ובקלט אחר.

מידע נוסף על העקרונות של Navigation 3 ועל הבחירות בעיצוב ה-API זמין בפוסט בבלוג בנושא ההשקה.

דוגמאות קוד

מאגר המתכונים מכיל דוגמאות לשימוש באבני הבניין של Navigation 3 כדי לפתור אתגרים נפוצים בניווט.