ناوبری به تعاملاتی اشاره دارد که به کاربران اجازه می دهد در قسمت های مختلف محتوای برنامه شما حرکت کنند، به داخل و از آن خارج شوند.
مؤلفه ناوبری Android Jetpack شامل کتابخانه ناوبری ، افزونه Safe Args Gradle و ابزارهایی است که به شما در اجرای ناوبری برنامه کمک می کند. مؤلفه Navigation موارد استفاده متنوع از ناوبری، از کلیک ساده روی دکمه تا الگوهای پیچیده تر، مانند نوار برنامه و کشوی ناوبری را کنترل می کند.
مفاهیم کلیدی
جدول زیر یک نمای کلی از مفاهیم کلیدی در مسیریابی و انواع اصلی که برای اجرای آنها استفاده می کنید ارائه می دهد.
مفهوم | هدف | تایپ کنید |
---|---|---|
میزبان | یک عنصر رابط کاربری که حاوی مقصد پیمایش فعلی است. به این معنی که وقتی کاربر از طریق یک برنامه پیمایش می کند، برنامه اساساً مقصد را در داخل و خارج میزبان ناوبری تعویض می کند. |
|
نمودار | ساختار داده ای که تمام مقاصد ناوبری را در برنامه و نحوه اتصال آنها با یکدیگر تعریف می کند. | |
کنترل کننده | هماهنگ کننده مرکزی برای مدیریت ناوبری بین مقاصد. این کنترلر روش هایی را برای پیمایش بین مقصدها، مدیریت پیوندهای عمیق، مدیریت پشته پشته و موارد دیگر ارائه می دهد. | |
مقصد | یک گره در نمودار ناوبری. هنگامی که کاربر به این گره هدایت می شود، میزبان محتوای آن را نمایش می دهد. | معمولاً هنگام ساخت نمودار ناوبری ایجاد می شود. |
مسیر | به طور منحصر به فرد یک مقصد و هر داده مورد نیاز آن را شناسایی می کند. می توانید با استفاده از مسیرها پیمایش کنید. مسیرها شما را به مقاصد می برند. | هر نوع داده قابل سریال سازی |
مزایا و ویژگی ها
کامپوننت Navigation تعدادی مزایا و ویژگی های دیگر از جمله موارد زیر را ارائه می دهد:
- انیمیشن ها و انتقال ها: منابع استاندارد شده ای را برای انیمیشن ها و انتقال ها فراهم می کند.
- پیوند عمیق: پیوندهای عمیقی را پیاده سازی و مدیریت می کند که کاربر را مستقیماً به مقصدی می برد.
- الگوهای رابط کاربری: از الگوهایی مانند کشوهای پیمایش و پیمایش پایین با حداقل کار اضافی پشتیبانی می کند.
- ایمنی نوع: شامل پشتیبانی برای انتقال داده بین مقصدها با نوع ایمنی است .
- پشتیبانی از 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 '18)
- Android Jetpack: ناوبری رابط کاربری را با کنترلر ناوبری مدیریت کنید (Google I/O '18)
نمونه ها
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 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 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 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 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 functionalJetcaster sample 🎙️
Jetnews sample
Jetsnack sample
Architecture
Jetchat sample
Now in Android App