پیمایش

پیمایش به تعاملاتی اشاره دارد که به کاربران اجازه می‌دهد در بخش‌های مختلف محتوا در برنامه شما پیمایش کنند، وارد آن‌ها شوند، و از آن‌ها خارج شوند.

مؤلفه «پیمایش» Android Jetpack شامل کتابخانه پیمایش، افزونه Safe Args Gradle، و ابزارهایی برای کمک به شما در پیاده‌سازی پیمایش برنامه است. مؤلفه «پیمایش» موارد استفاده متنوع پیمایش را مدیریت می‌کند، از کلیک‌های ساده روی دکمه‌ها تا الگوهای پیچیده‌تر، مانند نوارهای برنامه و کشوی پیمایش.

مفاهیم اصلی

جدول زیر نمای کلی مفاهیم کلیدی در پیمایش و انواع اصلی را که برای پیاده‌سازی آن‌ها استفاده می‌کنید ارائه می‌دهد.

مفهوم

هدف

نوع

میزبان

عنصر میانای کاربر که مقصد پیمایش فعلی را دربرمی‌گیرد. یعنی وقتی کاربر در برنامه پیمایش می‌کند، برنامه اساساً مقصدها را در میزبان پیمایش جابه‌جا می‌کند.

نمودار

ساختار داده‌ای که همه مقصدهای ناوبری را در برنامه و نحوه اتصال آن‌ها به یکدیگر تعریف می‌کند.

NavGraph

کنترل‌کننده

هماهنگ‌کننده مرکزی برای مدیریت پیمایش بین مقصدها. این کنترل‌کننده روش‌هایی برای پیمایش بین مقصدها، مدیریت پیوندهای عمیق، مدیریت پشته قبلی‌ها، و غیره ارائه می‌دهد.

NavController

مقصد

گرهی در گراف پیمایش. وقتی کاربر به این گره پیمایش می‌کند، میزبان محتوای آن را نمایش می‌دهد.

NavDestination

معمولاً هنگام ساختن نمودار پیمایش ایجاد می‌شود.

مسیر

مقصد و هرگونه داده موردنیاز آن را به‌طور منحصربه‌فرد شناسایی می‌کند.

می‌توانید بااستفاده از مسیرها پیمایش کنید. مسیرها شما را به مقصد می‌رسانند.

هر نوع داده قابل‌سریال‌سازی.

مزایا و ویژگی‌ها

مؤلفه «ناوبری» مزایا و ویژگی‌های متعدد دیگری ارائه می‌دهد، ازجمله موارد زیر:

  • پویانمایی‌ها و انتقال‌ها: منابع استانداردی برای پویانمایی‌ها و انتقال‌ها ارائه می‌دهد.
  • پیونددهی عمیق: پیوندهای عمیقی را که کاربر را مستقیماً به مقصد می‌برد پیاده‌سازی و مدیریت می‌کند.
  • الگوهای واسط کاربر: از الگوهایی مانند کشوهای پیمایش و پیمایش پایین با حداقل کار اضافی پشتیبانی می‌کند.
  • ایمنی تایپی: شامل پشتیبانی از انتقال داده بین مقصدها با ایمنی تایپی است.
  • پشتیبانی ViewModel: امکان محدود کردن ViewModel به نمودار پیمایش را فراهم می‌کند تا داده‌های مربوط به میانای کاربر بین مقصدهای نمودار هم‌رسانی شود.
  • تراکنش‌های قطعه: تراکنش‌های قطعه را کاملاً پشتیبانی و مدیریت می‌کند.
  • برگشتن و بالا رفتن: کنش‌های برگشتن و بالا رفتن را به‌طور پیش‌فرض به‌درستی اداره می‌کند.

گزینه‌های چارچوب

مؤلفه «ناوبری» از دو چارچوب اصلی برای پیاده‌سازی نمودار ناوبری شما پشتیبانی می‌کند که به معماری واسط کاربر برنامه‌تان بستگی دارد:

  • Compose: اگر برنامه‌تان کاملاً با Jetpack Compose ساخته شده است، از Navigation Compose استفاده کنید. مقصدها در نمودار شما قابل‌ترکیب هستند.
  • بخش‌ها: اگر برنامه‌تان از «نماها» یا ترکیبی از «نماها» و Compose استفاده می‌کند، از مؤلفه «پیمایش» مبتنی بر «بخش» استفاده کنید. مقصدها در نمودار شما تکه‌هایی هستند که می‌توانند میزبان «نماهای» استاندارد، محتوای Compose، یا ترکیبی از هر دو باشند.

برای برنامه‌هایی که از Views به Compose منتقل می‌شوند، استراتژی توصیه‌شده این است که همچنان از مؤلفه Fragment-based Navigation استفاده شود و درعین‌حال صفحه‌های جداگانه به Compose تبدیل شوند. وقتی همه قطعه‌ها با composable جایگزین شدند، می‌توانید نمودار پیمایش را به Navigation Compose منتقل کنید.

راه‌اندازی محیط

برای گنجاندن پشتیبانی ناوبری در پروژه‌تان، وابستگی‌های زیر را به فایل 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.10.2"

  // 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.10.2"

  // 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 و چارچوب‌های دیگر واسط کاربر، راهنماهای زیر را ببینید:

Codelabs

ویدیوها

نمونه‌ها