يشير التنقّل إلى التفاعلات التي تتيح للمستخدمين التنقّل بين أجزاء المحتوى المختلفة داخل تطبيقك، والدخول إليها، والخروج منها.
يتضمّن مكوّن Navigation في Android Jetpack مكتبة Navigation والمكوّن الإضافي لنظام Gradle الخاص بـ Safe Args وأدوات لمساعدتك في تنفيذ عملية التنقّل في التطبيق. يتعامل مكوّن التنقّل مع حالات استخدام متنوعة للتنقّل، بدءًا من النقرات البسيطة على الأزرار وصولاً إلى الأنماط الأكثر تعقيدًا، مثل أشرطة التطبيقات وقائمة التنقّل.
المفاهيم الرئيسية
يقدّم الجدول التالي نظرة عامة على المفاهيم الأساسية في التنقّل والأنواع الرئيسية التي تستخدمها لتنفيذها.
مفهوم |
الغرض |
النوع |
|---|---|---|
استضِف أصدقاءك وعائلتك |
عنصر في واجهة المستخدم يحتوي على وجهة التنقّل الحالية. وهذا يعني أنّه عندما يتنقّل المستخدم في أحد التطبيقات، يبدّل التطبيق الوجهات داخل وخارج أداة استضافة التنقّل. |
|
رسم بياني |
بنية بيانات تحدّد جميع وجهات التنقّل داخل التطبيق وكيفية ربطها ببعضها. |
|
فئة "متحكم" (Controller) |
المنسّق المركزي لإدارة التنقّل بين وجهات معيّنة يوفّر أداة التحكّم طرقًا للتنقّل بين الوجهات والتعامل مع الروابط لصفحات معيّنة وإدارة الأنشطة السابقة وغير ذلك. |
|
الوجهة |
عقدة في الرسم البياني للتنقّل عندما ينتقل المستخدم إلى هذه العُقدة، يعرض المضيف محتواها. |
يتم إنشاؤها عادةً عند إنشاء الرسم البياني للتنقّل. |
مسار الجولة |
تحدّد هذه السمة بشكلٍ فريد وجهة وأي بيانات تتطلّبها. يمكنك التنقّل باستخدام المسارات. تأخذك المسارات إلى الوجهات. |
أي نوع بيانات قابل للتسلسل |
المزايا والميزات
يوفّر مكوّن التنقّل عددًا من المزايا والميزات الأخرى، بما في ذلك ما يلي:
- الرسوم المتحركة والانتقالات: يوفّر هذا القسم مراجع موحّدة للرسوم المتحركة والانتقالات.
- الربط بصفحة معيّنة: يتم تنفيذ الروابط لصفحات معيّنة والتعامل معها، وهي روابط تنقل المستخدم مباشرةً إلى وجهة معيّنة.
- أنماط واجهة المستخدم: تتوافق مع أنماط مثل لوحات التنقّل وشريط التنقّل السفلي بأقل جهد إضافي.
- منع أخطاء الكتابة: يتضمّن إمكانية نقل البيانات بين الوجهات مع توفير منع أخطاء الكتابة.
- إتاحة استخدام ViewModel: تتيح تحديد نطاق
ViewModelفي رسم بياني للتنقّل لمشاركة البيانات ذات الصلة بواجهة المستخدم بين وجهات الرسم البياني. - معاملات الأجزاء: تتيح هذه السمة إمكانية التعامل مع معاملات الأجزاء بشكل كامل.
- الرجوع للأعلى: يتعامل مع إجراءَي الرجوع للأعلى بشكل صحيح تلقائيًا.
خيارات إطار العمل
يتوافق مكوّن Navigation مع إطارَي عمل أساسيَّين لتنفيذ الرسم البياني للتنقّل، وذلك حسب بنية واجهة المستخدم لتطبيقك:
- Compose: إذا كان تطبيقك مصمَّمًا بالكامل باستخدام Jetpack Compose، استخدِم Navigation Compose. الوجهات في الرسم البياني هي عناصر قابلة للإنشاء.
- الأجزاء: إذا كان تطبيقك يستخدم عناصر View أو مزيجًا من عناصر View وCompose، استخدِم مكوّن التنقّل المستند إلى الأجزاء. الوجهات في الرسم البياني هي أجزاء يمكنها استضافة طرق العرض العادية أو محتوى Compose أو مزيج من كليهما.
بالنسبة إلى التطبيقات التي يتم نقلها من Views إلى Compose، الاستراتيجية المقترَحة هي مواصلة استخدام مكوّن التنقّل المستند إلى Fragment مع تحويل الشاشات الفردية إلى Compose. بعد استبدال جميع الأجزاء بمكوّنات قابلة للإنشاء، يمكنك نقل الرسم البياني للتنقّل إلى Navigation Compose.
إعداد البيئة
لتضمين إمكانية التنقّل في مشروعك، أضِف الاعتماديات التالية إلى ملف build.gradle في تطبيقك:
Groovy
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.9.8" // 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" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.8" // 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") }
للحصول على معلومات حول إضافة مكوّنات معمارية أخرى إلى مشروعك، راجِع إضافة مكوّنات إلى مشروعك.
الخطوات التالية
للحصول على مزيد من المستندات والمراجع المتعلقة بمكوّن Navigation، يُرجى الاطّلاع على المراجع التالية.
أدلة مفصّلة
لمزيد من المعلومات حول كيفية تنفيذ مضيف التنقّل وNavController، بالإضافة إلى تفاصيل حول كيفية تفاعلهما مع Compose وأُطر عمل واجهة المستخدم الأخرى، راجِع الأدلة التالية:
- إنشاء أداة تحكّم في التنقّل: توضّح هذه الصفحة كيفية إنشاء
NavController. - إنشاء الرسم البياني للتنقّل: يوضّح هذا القسم كيفية إنشاء مضيف للتنقّل ورسم بياني للتنقّل.
- التنقّل إلى وجهة: يوضّح هذا الفيديو كيفية استخدام
NavControllerللتنقّل بين الوجهات في الرسم البياني.
اختبارات الرموز
الفيديوهات
- التنقل في شريط التنقل
- أفضل 10 ممارسات للانتقال إلى نشاط واحد
- نشاط واحد: الأسباب وحالات الاستخدام وطريقة التنفيذ (مؤتمر Android Dev Summit لعام 2018)
- Android Jetpack: إدارة التنقّل في واجهة المستخدم باستخدام أداة التحكّم في التنقّل (مؤتمر Google I/O 2018)