تتوافق التطبيقات المتكيّفة مع الشاشات بجميع أحجامها: شاشة الجهاز بأكملها، والنوافذ القابلة لتغيير الحجم في وضع النوافذ المتعددة، والاتجاهان العمودي والأفقي، والشاشات المطوية والمفتوحة للأجهزة القابلة للطي.
تتيح لك قائمة قصيرة من إعدادات الضبط وواجهات برمجة التطبيقات إنشاء تطبيقات متكيّفة. ومع ذلك، لا تتوافق بعض الإعدادات وواجهات برمجة التطبيقات القديمة مع التطبيقات المتكيّفة، ويجب تجنُّبها.
إمكانية تغيير الحجم
تتيح التطبيقات المتكيّفة تغيير حجم التطبيق واستخدام وضع النوافذ المتعددة.
تتيح السمة resizeableActivity لعنصرَي البيان <activity> و<application> تفعيل وضع النوافذ المتعددة أو إيقافه على الإصدار 11 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 30) والإصدارات الأقدم. في الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، تتيح الشاشات الكبيرة وضع النوافذ المتعدّدة بغض النظر عن السمة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استخدام وضع النوافذ المتعددة.
فعِّل تطبيقك للمشاركة في سيناريوهات النوافذ المتعددة وتنفيذ المهام المتعددة من أجل زيادة إنتاجية المستخدمين ورضاهم.
اضبط القيمة على resizeableActivity="true" إذا كان تطبيقك يستهدف مستويات واجهة برمجة تطبيقات أقل من 24،
وإلا فلا داعي لذلك، لأنّ القيمة true تلقائية في الإصدار Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث.
لا تضبط resizeableActivity="false" لأي مستوى من مستويات واجهة برمجة التطبيقات. لا تستبعد تطبيقك من حالات الاستخدام التي تتضمّن وضع النوافذ المتعدّدة.
الاتجاه
تتيح التطبيقات المتكيّفة استخدام الوضعَين العمودي والأفقي بغض النظر عن حجم الشاشة أو وضع النوافذ.
يفرض إعداد البيان screenOrientation قيودًا على اتجاه النشاط.
أزِل إعداد screenOrientation من بيان تطبيقك.
لا يمنع قفل اتجاه التطبيقات تغييرات حجم النافذة. يتم تغيير حجم التطبيقات عند الانتقال إلى وضع النوافذ المتعددة أو عند طي الجهاز أو فتحه أو عند تغيير حجم نافذة من نوع سطح المكتب. يجب أن يتيح تطبيقك إجراء تغييرات في حجم النافذة بغض النظر عن إعداد السمة screenOrientation.
عدم حصر اتجاه النشاط يتم عرض التطبيقات التي تقفل اتجاه الشاشة في مربّع أسود على الأجهزة ذات الشاشات الكبيرة وأحجام النوافذ غير المتوافقة.
تكون فرص العثور على التطبيقات التي تظهر في مربّع أصغر أقل على Google Play للأجهزة اللوحية والهواتف القابلة للطي وأجهزة ChromeOS.
نسبة العرض إلى الارتفاع
تختلف أحجام الشاشات والنوافذ، وبالتالي تختلف نِسب العرض إلى الارتفاع، بدءًا من النسبة الطويلة والضيقة، إلى المربّعة، إلى القصيرة والعريضة.
تفرض إعدادات ملف البيان minAspectRatio وmaxAspectRatio قيودًا على نسبة العرض إلى الارتفاع في تطبيقك، وذلك باستخدام قيم مبرمَجة.
تكييف تطبيقك ليتناسب مع الشاشة بغض النظر عن الأبعاد النسبية
أزِل الإعدادَين minAspectRatio وmaxAspectRatio من بيان تطبيقك. أو تأكَّد من إمكانية تغيير حجم تطبيقك، وسيتم ضبط نسبة العرض إلى الارتفاع تلقائيًا
(راجِع قسم إمكانية تغيير الحجم).
لا تحاول التحكّم في الأبعاد النسبية لتطبيقك، لأنّه سيتم عرض تطبيقك في مربّع إذا كان يعمل على شاشة أو في نافذة بنسبة عرض إلى ارتفاع غير متوافقة مع نسبة العرض إلى الارتفاع في التطبيق.
في نظام التشغيل Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للمستخدمين تجاهل نسبة العرض إلى الارتفاع في التطبيق لتوسيع التطبيقات التي تظهر في مربّع أسود لملء مساحة العرض المتاحة. اطّلِع على وضع التوافق مع الأجهزة.
حجم النافذة
إنّ تحسين التنسيقات لتناسب أحجام الشاشات المختلفة هو الفرضية الأساسية للتصميم التكيّفي. تركّز التطبيقات التكيُّفية على حجم نافذة التطبيق بدلاً من حجم شاشة الجهاز. عندما يكون التطبيق في وضع ملء الشاشة، تكون نافذة التطبيق هي شاشة الجهاز.
توفّر فئات حجم النافذة طريقة منهجية لتحديد حجم نافذة التطبيق وتصنيفها. يمكنك تعديل تطبيقك من خلال تغيير التصميمات عند تغيُّر فئة حجم النافذة في تطبيقك.
تقييم حجم نافذة تطبيقك استنادًا إلى فئات حجم النافذة
لتحديد فئة حجم النافذة، استخدِم currentWindowAdaptiveInfoV2()
الدالة ذات المستوى الأعلى في مكتبة Compose Material 3 Adaptive (التي
تحلّ محل الدالة currentWindowAdaptiveInfo() المتوقّفة نهائيًا). لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء تطبيقات متجاوبة.
لا تتجاهل فائدة تعريفات فئة حجم النافذة وواجهات برمجة التطبيقات المضمّنة. لا تستخدِم واجهات برمجة التطبيقات المتوقّفة نهائيًا لاحتساب حجم النافذة.
واجهات برمجة التطبيقات المتوقّفة نهائيًا
لا تقيس واجهات برمجة التطبيقات القديمة لمنصات التشغيل نافذة التطبيق بشكل صحيح، إذ يقيس بعضها شاشة الجهاز، بينما يستبعد البعض الآخر عناصر واجهة النظام.
استخدِم WindowManager#getCurrentWindowMetrics() وWindowMetrics#getBounds() للحصول على حجم نافذة التطبيق. استخدِم
WindowMetrics#getDensity() للحصول على كثافة الشاشة.
لا تستخدِم واجهات برمجة التطبيقات Display التالية التي تم إيقافها نهائيًا لتحديد حجم النافذة:
-
getSize(): تم إيقافها نهائيًا في الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) -
getMetrics(): تم إيقافها نهائيًا في الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) -
getRealSize(): تم إيقافها نهائيًا في Android 12 (المستوى 31 لواجهة برمجة التطبيقات) -
getRealMetrics(): تم إيقافها نهائيًا في Android 12 (المستوى 31 لواجهة برمجة التطبيقات)
إنشاء
تم تصميم Jetpack Compose لتطوير واجهات مستخدم تكيُّفية. لا يحتوي على ملفات XML أو ملفات تخطيط أو مؤهلات موارد. ما عليك سوى استخدام الدوال البرمجية القابلة للإنشاء المستندة إلى Kotlin وغير المحتفظة بالحالة،
مثل Column وRow وBox التي تصف واجهة المستخدم، والمعدِّلات
مثل offset وpadding وsize التي تضيف سلوكًا إلى عناصر واجهة المستخدم.
إنشاء التطبيقات باستخدام Compose يمكنك الاطّلاع على آخر الأخبار حول الميزات والإصدارات.
لا تعتمد على تكنولوجيا قديمة. لا تدع تطبيقك يصبح قديمًا.
مكتبة Compose Material 3 Adaptive
توفّر مكتبة Compose Material 3 المتكيّفة مكوّنات وواجهات برمجة تطبيقات تسهّل عملية تطوير التطبيقات المتكيّفة.
استخدِم واجهات برمجة التطبيقات التالية لجعل تطبيقك قابلاً للتكيّف:
NavigationSuiteScaffold: للتبديل بين شريط التنقّل وشريط التنقّل الجانبي حسب فئة حجم نافذة التطبيق-
ListDetailPaneScaffold: تنفّذ عرض على شكل قائمة مع تفاصيل الأساسي. تعديل التنسيق ليناسب حجم نافذة التطبيق -
SupportingPaneScaffold: تنفّذ هذه السمة التنسيق الأساسي للوحة الثانوية.
لا تحاول إعادة اختراع العجلة. لا تفوّت فرص تحسين إنتاجية المطوّرين التي توفّرها جميع مكتبات Jetpack Compose.
التنسيقات
يتوقّع المستخدمون أن تستفيد التطبيقات إلى أقصى حد من مساحة العرض المتاحة من خلال المحتوى التكميلي أو عناصر التحكّم المحسّنة.
تعمل التطبيقات المتكيّفة على تحسين التنسيقات استنادًا إلى التغييرات في العرض، وخاصةً التغييرات في حجم نافذة التطبيق أو التغييرات في وضع الجهاز.
تغيير مكونات واجهة المستخدم عند تغيير حجم النافذة للاستفادة من مساحة العرض المتاحة على سبيل المثال، استبدِل شريط التنقّل السفلي المستخدَم في أحجام النوافذ الصغيرة بشريط تنقّل عمودي في النوافذ المتوسطة والكبيرة. إعادة ضبط موضع مربّعات الحوار لتكون في متناول اليد على جميع الشاشات
نظِّم المحتوى في لوحات لتفعيل التنسيقات المتعددة اللوحات، مثل لوحة التفاصيل ولوحة الدعم لعرض المحتوى الديناميكي.
إذا كنت لا تستخدم لوحات المحتوى، لا تكتفِ بتوسيع عناصر واجهة المستخدم لملء مساحة العرض المتاحة. يصعب قراءة أسطر النص الطويلة. تبدو الأزرار الممدودة مصمَّمة بشكل سيئ. إذا كنت تستخدم Modifier.fillMaxWidth، لا تفترض أنّ هذا السلوك مناسب لجميع أحجام الشاشات.
أجهزة الإدخال
لا يستخدم المستخدمون شاشات اللمس للتفاعل مع التطبيقات فقط.
تتوافق التطبيقات التكيّفية مع لوحات المفاتيح والفئران وأقلام الإدخال الخارجية لتوفير تجربة مستخدم محسّنة ومساعدة المستخدمين على زيادة إنتاجيتهم على جميع أشكال الأجهزة.
استفِد من الوظائف المضمّنة في إطار عمل Android للتنقّل باستخدام علامة التبويب في لوحة المفاتيح والنقر والتحديد والتمرير باستخدام الماوس أو لوحة اللمس. يمكنك نشر اختصارات لوحة المفاتيح الخاصة بتطبيقك في مساعد اختصارات لوحة المفاتيح.
استخدِم مكتبة Material 3 في Jetpack للسماح للمستخدمين بالكتابة في أي مكوّن TextField باستخدام قلم شاشة.
لا تجعل أساليب الإدخال البديلة مستحيلة. عدم إدخال مشاكل متعلّقة بسهولة الاستخدام
ملخّص
- إنشاء تطبيقك باستخدام Compose ومكتبة Material 3 Adaptive
- استناد التنسيقات إلى فئات حجم النافذة
- إنشاء تنسيقات متعدّدة اللوحات
- إتاحة تغيير حجم تطبيقك
- عدم قفل اتجاه النشاط مطلقًا
- عدم حصر نسبة العرض إلى الارتفاع
- إتاحة طرق إدخال أخرى غير اللمس
- تجنُّب واجهات برمجة التطبيقات التي تم إيقافها نهائيًا
✓ نفِّذ ما يتوقّعه المستخدمون: حسِّن تطبيقك ليتوافق مع تنوّع الأجهزة التي يعتمد عليها المستخدمون يوميًا.
✗ لا تنتظر. ابدأ اليوم!