التنقل
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تجربة ميزة "الكتابة"
إنّ Jetpack Compose على Wear OS هو مجموعة الأدوات المقترَحة لواجهة المستخدم في Wear OS.
بعد تصميم شاشات فردية لكل رحلة مستخدِم، قد يكون لديك بضع شاشات عمودية أو
شاشات فردية.
بعد ذلك، عليك تحديد كيفية تصميم هذه الشاشات للعمل معًا وكيفية تنفيذ ميزة
التنقّل.
التصميم
يجب أن يكون التسلسل الهرمي لتطبيقك بسيطًا وخطيًا، كما هو موضّح في إرشادات تصميم التطبيقات.
في البداية، يجب أن يفتح مشغّل تطبيقك رحلة المستخدم الأكثر شيوعًا. تصميم كل رحلة مستخدم
مع عرض المحتوى الأكثر أهمية في أعلى الصفحة بالنسبة إلى الحاويات الرأسية، استخدِم الجزء السفلي للربط برحلة المستخدِم وغيرها من الإعدادات الأقل شيوعًا.
الشكل 1: اعرض المحتوى الأكثر أهمية في أعلى الحاويات الرأسية.
عندما يدخل المستخدمون إلى إحدى شاشاتك، تأكَّد من أنّه يمكنهم استخدام إيماءة التمرير السريع للإغلاق
للانتقال إلى أسفل الحزمة المُعاد عرضها.
تنفيذ التنقّل
عند تنفيذ شريط التنقّل، تتوفّر لك ثلاثة خيارات موضّحة في الأقسام التالية:
- الأنشطة فقط، وهي الطريقة المُقترَحة
- الأنشطة والمقاطع
- التنقّل في Jetpack
الأنشطة فقط
بما أنّ الشاشات العمودية تكون عادةً على مستوى واحد، يمكنك تنفيذ جميع شاشتك
باستخدام الأنشطة وبدون استخدام الأجزاء.
ننصحك بشدة باتّباع هذا النهج. ويؤدي ذلك إلى تبسيط الرمز البرمجي، وتعمل الأنشطة تلقائيًا مع المرور السريع لإغلاق. ويسهّل ذلك أيضًا
تنفيذ الوضع السينمائي.
ملاحظة: اجعل الأنشطة ترث من
ComponentActivity
إذا
لم تكن تستخدِم أقسامًا. تستخدِم أنواع الأنشطة الأخرى عناصر واجهة مستخدِم مخصّصة للأجهزة الجوّالة لا تحتاج إليها
في Wear OS.
الأنشطة والمقاطع
يمكنك استخدام المقاطع مع الأنشطة في تطبيق Wear OS. ومع ذلك،
لا ننصح بذلك، لأنّه ما مِن ميزة واضحة لاستخدام المقاطع لإنشاء بنية سطحية ومباشرة.
ملاحظة: إذا كنت تستخدم أجزاء، اجعلها تكتسِب الخصائص من
FragmentActivity
. إنّ
أنواع الأنشطة الأخرى تستخدِم عناصر واجهة مستخدِم خاصة بالأجهزة الجوّالة لا تحتاج إليها في Wear OS.
في ما يلي بعض الصعوبات التي تواجهك عند استخدام الأجزاء في تطبيق Wear OS:
-
عليك تنفيذ ميزة التمرير سريعًا لإغلاق الرسائل بنفسك. بخلاف ذلك، عندما ينفِّذ المستخدم التمرير سريعًا، سيخرج من التطبيق بأكمله.
-
إذا كنت تستخدم
AmbientMode
، عليك
تخصيصه لكي يعمل بشكل صحيح. يتم ضبط AmbientMode
على النشاط، لذا عليك
أخذ ذلك في الاعتبار عند تنفيذ الأجزاء.
لتفعيل ميزة التمرير سريعًا لإغلاق العناصر باستخدام الأجزاء، يجب لف العنصر الذي يحتوي على القطعة
في فئة
SwipeDismissFrameLayout
. اطّلِع على
إيماءة التمرير السريع للإغلاق
للحصول على مزيد من المعلومات. ويمنح ذلك المستخدمين تجربة متّسقة مع تطبيقك.
ملاحظة: عند استخدام الأجزاء، استخدِم
FragmentManager.add
بدلاً من
FragmentManager.replace
لتفعيل إيماءة التمرير السريع لإغلاق العنصر.
يساعد ذلك في ضمان عرض المقتطف السابق أسفل المقتطف العلوي أثناء التمرير سريعًا عليه.
التنقّل في Jetpack
يمكن أن تعمل أداة Jetpack Navigation على نظام التشغيل Wear OS، ولكنّها تواجه العيوب نفسها التي تواجهها الأجزاء. ويؤدي ذلك إلى زيادة
العمل المبذول في التطوير، ولا يقدّم
العديد من المزايا لأنّ التسلسل الهرمي لتطبيق Wear OS يكون بشكل عام بسيطًا وخطيًا. وأفضل نهج هو التركيز على النشاط فقط.
للاستفادة من Jetpack Navigation بالكامل، اتّبِع الخطوات التالية:
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Navigation\n\nTry the Compose way \nJetpack Compose on Wear OS is the recommended UI toolkit for Wear OS. \n[Handle navigation using Compose on Wear OS →](/training/wearables/compose/navigation) \n\n\nAfter designing individual screens for each user journey, you might have a few vertical or single\nscreens.\nNext, you have to decide how to design these screens to work together and how to implement the\nnavigation.\n\nDesign\n------\n\n\nKeep your app's hierarchy shallow and linear, as called out in the [app design guidelines](/training/wearables/design/apps).\n\n\nTo start, your app's launcher should open the most common user journey. Design each user journey\nwith the most important content at the top. For vertical containers, use the bottom to link to\nother, less-common user journeys and the settings.\n\n\n**Figure 1.** Keep the most important content at the top of vertical containers.\n\nWhen users enter one of your screens, make sure they can use the swipe-to-dismiss gesture\nto navigate down the [back stack](/guide/components/tasks-and-back-stack).\n\nImplement the navigation\n------------------------\n\n\nWhen you implement your navigation, you have three options, described in the following sections:\n\n- Activities only, which is the recommended approach\n- Activities and fragments\n- Jetpack Navigation\n\n### Activities only\n\n\nSince vertical screens are typically one level deep, you can implement all your screens\nusing activities and without using fragments.\n\n\nWe strongly recommend this approach. It simplifies your code, and\nactivities automatically support\n[swipe-to-dismiss](/training/wearables/apps/exit#swipe-to-dismiss). This also makes\nimplementing [ambient mode](/training/wearables/apps/always-on) simpler.\n\n\n**Note:** Make your activities inherit from a\n[`ComponentActivity`](/reference/androidx/activity/ComponentActivity) if\nyou are not using fragments. The other activity types use mobile-specific UI elements you don't\nneed for Wear OS.\n\n### Activities and fragments\n\n\nYou can use [fragments](/guide/fragments) with activities in your Wear OS app. However,\nwe don't recommend this, as there isn't a clear advantage to using fragments to create a shallow and flat\narchitecture.\n\n\n**Note:** If you are using fragments, make them inherit from\n[`FragmentActivity`](/reference/androidx/fragment/app/FragmentActivity). The\nother activity types use mobile-specific UI elements you don't need for Wear OS.\n\n\nSome of the difficulties with using fragments in your Wear OS app include the following:\n\n- You must implement the swipe-to-dismiss yourself. Otherwise, when the user performs a swipe, they exit the entire app.\n- If you are using [`AmbientMode`](/reference/androidx/wear/ambient/AmbientMode), you must customize it to work properly. `AmbientMode` is set on the activity, so you have to take that into account when implementing fragments.\n\n\nTo support swipe-to-dismiss with fragments, you must wrap the fragment-containing\nview in the\n[`SwipeDismissFrameLayout`](/reference/androidx/wear/widget/SwipeDismissFrameLayout)\nclass. See\n[The swipe-to-dismiss gesture](/training/wearables/apps/exit#swipe-to-dismiss)\nfor more information. Doing this provides users a consistent experience with your app.\n\n\n**Note:** When using fragments, use\n[`FragmentManager.add`](/reference/androidx/fragment/app/FragmentTransaction#add(int,%20java.lang.Class\u003c?%20extends%20androidx.fragment.app.Fragment\u003e,%20android.os.Bundle))\nrather than\n[`FragmentManager.replace`](/reference/androidx/fragment/app/FragmentTransaction#replace(int,%20java.lang.Class\u003c?%20extends%20androidx.fragment.app.Fragment\u003e,%20android.os.Bundle))\nto support the swipe-to-dismiss gesture.\nThis helps ensure that your previous fragment renders under the top fragment while it is being\nswiped away.\n\n### Jetpack Navigation\n\n\nJetpack Navigation can work on Wear OS, but it has the same drawbacks as fragments. It adds\ndevelopment work and, because a Wear OS app's hierarchy is generally shallow and linear, it doesn't\noffer many advantages. An activity-only approach is best.\n\n\nTo fully leverage Jetpack Navigation, do the following:\n\n- Make sure every fragment uses a [`SwipeDismissFrameLayout`](/reference/kotlin/androidx/wear/widget/SwipeDismissFrameLayout) as its root, and manually use the dismiss action to go back in the navigation graph.\n- Implement a custom [`FragmentNavigator`](/reference/androidx/navigation/fragment/FragmentNavigator) that renders fragments on top of each other."]]