'ניווט' מתייחס לאינטראקציות שמאפשרות למשתמשים לנווט בין קטעי התוכן השונים באפליקציה, להיכנס אליהם ולצאת מהם.
רכיב הניווט של Android Jetpack כולל את ספריית הניווט, את הפלאגין Safe Args Gradle וכלים שיעזרו לכם להטמיע ניווט באפליקציה. רכיב הניווט מטפל בתרחישי שימוש שונים של ניווט, החל מלחיצות פשוטות על לחצנים ועד לדפוסים מורכבים יותר, כמו סרגי אפליקציות ותיבות הניווט.
מושגים מרכזיים
בטבלה הבאה מוצגת סקירה כללית של מושגי המפתח בתכונת הניווט והסוגים העיקריים שבהם משתמשים כדי להטמיע אותם.
קונספט |
המטרה |
סוג |
---|---|---|
מארח |
רכיב בממשק המשתמש שמכיל את יעד הניווט הנוכחי. כלומר, כשמשתמש מנווט באפליקציה, האפליקציה למעשה מחליפה יעדים ממארח הניווט וממארח הניווט החוצה. |
|
תרשים |
מבנה נתונים שמגדיר את כל יעדי הניווט באפליקציה ואת האופן שבו הם מחוברים זה לזה. |
|
שלט רחוק |
הארגון המרכזי שמנהל את הניווט בין היעדים. ב-Controller יש שיטות לניווט בין יעדים, לטיפול בקישורי עומק, לניהול סטאק החזרה אחורה ועוד. |
|
יעד |
צומת בתרשים הניווט. כשהמשתמש מנווט לצומת הזה, המארח מציג את התוכן שלו. |
בדרך כלל נוצרים במהלך היצירה של תרשים הניווט. |
מסלול |
מזהה ייחודי של יעד ושל כל הנתונים הנדרשים לו. אפשר לנווט באמצעות מסלולים. מסלולים מאפשרים לכם להגיע ליעדים. |
כל סוג נתונים שניתן לסדר בסדרה. |
יתרונות ותכונות
לרכיב הניווט יש כמה יתרונות ותכונות נוספות, כולל:
- אנימציות ומעברים: משאבים סטנדרטיים לאנימציות ולמעברים.
- קישורי עומק: הטמעה וטיפול בקישורי עומק שמעבירים את המשתמש ישירות ליעד.
- תבניות של ממשק משתמש: תמיכה בתבניות כמו תיבות ניווט ותפריט ניווט בתחתית המסך, עם עבודה נוספת מינימלית.
- בטיחות סוגים: כולל תמיכה בהעברת נתונים בין יעדים עם בטיחות סוגים.
- תמיכה ב-ViewModel: מאפשרת להגדיר את ההיקף של
ViewModel
לתרשים ניווט כדי לשתף נתונים שקשורים לממשק המשתמש בין היעדים בתרשים. - עסקאות מנותקות: תמיכה מלאה בעסקאות מנותקות וטיפול בהן.
- חזרה אחורה וחזרה למעלה: המערכת מטפלת בפעולות 'חזרה אחורה' ו'חזרה למעלה' בצורה תקינה כברירת מחדל.
הגדרת הסביבה
כדי לכלול תמיכה בניווט בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle
של האפליקציה:
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.9" // 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" }
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.9" // 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)
דוגמיות
These samples showcase different architectural approaches to developing Android apps. In its different branches you'll find the same app (a TODO app) implemented with small differences.
In this branch you'll find:
User Interface built with Jetpack Jetsnack is a sample snack ordering app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This Jetnews is a sample news reading app, built with Jetpack Compose. The goal of the sample is to showcase the current UI capabilities of Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository Jetcaster is a sample podcast app, built with Jetpack Compose. The goal of the sample is to showcase building with Compose across multiple form factors (mobile, TV, and Wear) and full featured architecture.
To try out this sample app, use the latest Jetchat is a sample chat app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample Learn how this app was designed and built in the design case study, architecture learning journey and modularization learning journey.
This is the repository for the Now in Android app. It is a work in progress 🚧.
Now in Android is a fully functionalArchitecture
Jetsnack sample
Jetnews sample
Jetcaster sample 🎙️
Jetchat sample
Now in Android App