التنقُّل

يشير التنقل إلى التفاعلات التي تتيح للمستخدمين التنقل عبر أجزاء مختلفة من المحتوى داخل تطبيقك والوصول إليها والعودة منها.

يشتمل مكوِّن التنقل في Android Jetpack على مكتبة التنقل والمكوّن الإضافي Safe Args Gradle وأدوات لمساعدتك في تنفيذ التنقل بين التطبيقات. يتعامل عنصر التنقل مع حالات استخدام متنوعة للتنقل، بدءًا من النقرات المباشرة على الأزرار إلى الأنماط الأكثر تعقيدًا، مثل أشرطة التطبيقات ودرج التنقل.

المفاهيم الرئيسيّة

يقدم الجدول التالي نظرة عامة على المفاهيم الرئيسية الثلاثة في التنقل والأنواع الرئيسية التي تستخدمها لتنفيذها.

الفكرة

الغرض

Type

المضيف

عنصر في واجهة مستخدم يحتوي على وجهة التنقّل الحالية وهذا يعني أنه عندما ينتقل المستخدم خلال أحد التطبيقات، يبدّل التطبيق بشكل أساسي الوجهات من داخل مضيف التنقل وخارجه.

رسم بياني

هيكل بيانات يحدد جميع وجهات التنقل داخل التطبيق وكيف تتصل معًا.

NavGraph

وحدة التحكّم

المنسق المركزي لإدارة التنقل بين الوجهات. توفر وحدة التحكم طرقًا للتنقل بين الوجهات، والتعامل مع الروابط لصفحات في التطبيق، وإدارة الحزمة الخلفية، والمزيد.

NavController

المزايا والميزات

يوفر مكوِّن التنقل عددًا من المزايا والميزات الأخرى، بما في ذلك ما يلي:

  • الصور المتحركة والانتقالات: توفر موارد موحّدة للصور المتحركة والانتقالات.
  • الربط بصفحة معيّنة:لتنفيذ هذه الروابط، يتم استخدام الروابط لصفحات في التطبيق والتي تنقل المستخدم إلى وجهة معيّنة مباشرةً.
  • أنماط واجهة المستخدم: تتيح استخدام أنماط مثل أدراج التنقل والتنقل السفلي بأقل قدر من العمل الإضافي.
  • أمان النوع: يتضمّن المكوّن الإضافي Safe Args Gradle الذي يوفّر أمان الكتابة عند التنقّل وتمرير البيانات بين الوجهات.
  • إتاحة ViewModel: تتيح هذه الميزة تحديد نطاق ViewModel على رسم بياني للتنقّل لمشاركة البيانات المتعلقة بواجهة المستخدم بين وجهات الرسم البياني.
  • المعاملات الجزئية: تتيح هذه الميزة المعاملات المجزأة وتعالجها بالكامل.
  • الاحتفاظ بنسخة احتياطية أو الاحتفاظ بنسخة احتياطية: لمعالجة إجراءات الاحتفاظ بنسخة احتياطية أو الاحتفاظ بنسخة احتياطية بشكل صحيح تلقائيًا.

إعداد البيئة

لتضمين دعم التنقل في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle لتطبيقك:

Groovy

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

للحصول على معلومات بشأن إضافة مكونات بنية أخرى إلى مشروعك، يمكنك الاطّلاع على إضافة مكونات إلى مشروعك.

الخطوات التالية

لمزيد من الوثائق والموارد المتعلقة بمكون التنقل، راجع الموارد التالية.

الأدلة التفصيلية

للاطّلاع على مزيد من المعلومات حول كيفية تنفيذ مضيف التنقّل وNavController، بالإضافة إلى تفاصيل حول كيفية تفاعله مع Compose وأُطر عمل واجهة المستخدم الأخرى، يمكنك الاطّلاع على الأدلة التالية:

الدروس التطبيقية حول الترميز

الفيديوهات الطويلة

عيّنات