التنقُّل

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

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

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

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

الفكرة

الغرض

Type

المضيف

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

رسم بياني

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

NavGraph

وحدة التحكّم

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

NavController

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

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

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

إعداد البيئة

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

رائع

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 وإطارات عمل واجهة المستخدم الأخرى، يُرجى الاطّلاع على الأدلة التالية:

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

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

العيّنات