'ניווט' מתייחס לאינטראקציות שמאפשרות למשתמשים לנווט בין קטעי התוכן השונים באפליקציה, להיכנס אליהם ולצאת מהם.
רכיב הניווט של Android Jetpack כולל את ספריית הניווט, את הפלאגין Safe Args Gradle וכלים שיעזרו לכם להטמיע ניווט באפליקציה. רכיב הניווט מטפל בתרחישי שימוש שונים של ניווט, החל מלחיצות פשוטות על לחצנים ועד לדפוסים מורכבים יותר, כמו סרגי אפליקציות ותיבות הניווט.
מושגים מרכזיים
בטבלה הבאה מוצגת סקירה כללית של מושגי המפתח בתכונת הניווט והסוגים העיקריים שבהם משתמשים כדי להטמיע אותם.
קונספט |
המטרה |
סוג |
---|---|---|
מארח |
רכיב בממשק המשתמש שמכיל את יעד הניווט הנוכחי. כלומר, כשמשתמש מנווט באפליקציה, האפליקציה למעשה מחליפה יעדים ממארח הניווט וממארח הניווט החוצה. |
|
תרשים |
מבנה נתונים שמגדיר את כל יעדי הניווט באפליקציה ואת האופן שבו הם מחוברים זה לזה. |
|
שלט רחוק |
הארגון המרכזי שמנהל את הניווט בין היעדים. ב-Controller יש שיטות לניווט בין יעדים, לטיפול בקישורי עומק, לניהול סטאק החזרה אחורה ועוד. |
|
יעד |
צומת בתרשים הניווט. כשהמשתמש מנווט לצומת הזה, המארח מציג את התוכן שלו. |
בדרך כלל נוצרים במהלך היצירה של תרשים הניווט. |
מסלול |
מזהה ייחודי של יעד ושל כל הנתונים הנדרשים לו. אפשר לנווט באמצעות מסלולים. מסלולים מאפשרים לכם להגיע ליעדים. |
כל סוג נתונים שניתן לסדר בסדרה. |
יתרונות ותכונות
לרכיב הניווט יש כמה יתרונות ותכונות נוספות, כולל:
- אנימציות ומעברים: משאבים סטנדרטיים לאנימציות ולמעברים.
- קישורי עומק: הטמעה וטיפול בקישורי עומק שמעבירים את המשתמש ישירות ליעד.
- תבניות של ממשק משתמש: תמיכה בתבניות כמו תיבות ניווט ותפריט ניווט בתחתית המסך, עם עבודה נוספת מינימלית.
- בטיחות סוגים: כולל תמיכה בהעברת נתונים בין יעדים עם בטיחות סוגים.
- תמיכה ב-ViewModel: מאפשרת להגדיר את ההיקף של
ViewModel
לתרשים ניווט כדי לשתף נתונים שקשורים לממשק המשתמש בין היעדים בתרשים. - עסקאות מנותקות: תמיכה מלאה בעסקאות מנותקות וטיפול בהן.
- חזרה אחורה וחזרה למעלה: המערכת מטפלת בפעולות 'חזרה אחורה' ו'חזרה למעלה' בצורה תקינה כברירת מחדל.
הגדרת הסביבה
כדי לכלול תמיכה בניווט בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
של האפליקציה:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.6" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.6" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
במאמר הוספת רכיבים לפרויקט מוסבר איך מוסיפים רכיבי ארכיטקטורה אחרים לפרויקט.
השלבים הבאים
למידע נוסף על רכיב הניווט ומקורות מידע נוספים, אפשר לעיין במקורות המידע הבאים.
מדריכים מפורטים
למידע נוסף על הטמעת מארח ניווט ו-NavController
, ועל האינטראקציה שלהם עם Compose ומראות UI אחרים, תוכלו לעיין במדריכים הבאים:
- יצירת רכיב לניהול הניווט: תיאור של תהליך היצירה של
NavController
. - יצירת תרשים הניווט: מידע על יצירת מארח ניווט ותרשימים של ניווט.
- ניווט ליעד: הדגמה של השימוש ב-
NavController
כדי לעבור בין היעדים בתרשים.
Codelabs
סרטונים
- ניווט בתפריט הניווט
- 10 שיטות מומלצות למעבר לפעילות אחת
- פעילות יחידה: למה, מתי ואיך (Android Dev Summit 2018)
- Android Jetpack: ניהול הניווט בממשק המשתמש באמצעות בקר ניווט (Google I/O 2018)