الإجراءات التكيُّفية والإجراءات غير التكيّفية

تتوافق التطبيقات التكيُّفية مع شاشات جميع الأحجام: شاشة الجهاز بالكامل، ويمكن تغيير حجمها النوافذ في وضع النوافذ المتعددة، الاتجاه الرأسي والأفقي، مطوية وغير المطوية للأجهزة القابلة للطي.

تمكّنك قائمة مختصرة بإعدادات الضبط وواجهات برمجة التطبيقات من إنشاء نماذج تكيُّفية التطبيقات. ولكن بعض الإعدادات وواجهات برمجة التطبيقات القديمة غير متوافقة مع التطبيقات التكيُّفية. ويجب تجنبه.

إمكانية إعادة التعديل

تتيح التطبيقات التكيُّفية إمكانية إعادة تعديل حجم التطبيق ووضع النوافذ المتعددة.

السمة resizeableActivity للسمة <activity> تعمل عناصر البيان <application> على تفعيل النوافذ المتعددة أو إيقافها في نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأقدم. على نظامَي التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) الشاشات الأعلى والكبيرة تتوافق مع وضع النوافذ المتعددة بغض النظر عن . لمزيد من المعلومات، يُرجى الاطِّلاع على مقالة إتاحة وضع النوافذ المتعددة.

✓ تنفيذ

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

يمكنك ضبط السمة resizeableActivity="true" إذا كان تطبيقك يستهدف مستويات أقل من 24 لواجهة برمجة التطبيقات. لذا، انسَ الأمر، فهو true افتراضيًا على نظام التشغيل Android 7.0 (واجهة برمجة التطبيقات المستوى 24) والمستويات الأعلى.

✗ لا تفعل

لا تضبط resizeableActivity="false" لأي مستوى لواجهة برمجة التطبيقات. عدم استبعاد تطبيقك من حالات الاستخدام التي تشمل وضع النوافذ المتعددة.

الاتجاه

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

يحظر إعداد بيان screenOrientation اتجاه النشاط.

✓ تنفيذ

أزِل الإعداد screenOrientation من بيان التطبيق.

لا يمنع قفل اتجاه التطبيقات حدوث تغييرات حجم النافذة. التطبيقات هي يتم تغيير حجمها عند الدخول في وضع النوافذ المتعددة، وعند طي الجهاز أو طيه، أو عند تغيير حجم نافذة ذات تصميم مرن. يجب أن يتيح تطبيقك التغييرات في النافذة. الحجم بغض النظر عن إعداد السمة screenOrientation.

✗ لا تفعل

عدم حظر اتجاه النشاط. يتم عرض التطبيقات التي يتم قفل اتجاهها في وضع العرض على شاشة عريضة أفقيًا. على الأجهزة ذات الشاشات الكبيرة وأحجام النوافذ غير المتوافقة.

تنخفض قابلية اكتشاف التطبيقات المُعدّة للعرض على شاشة عريضة أفقيًا من Google Play والأجهزة اللوحية والأجهزة القابلة للطي وأجهزة ChromeOS.

نسبة العرض إلى الارتفاع

ونظرًا لاختلاف أحجام الشاشة والنوافذ، تتفاوت نِسب العرض إلى الارتفاع الخاصة بهما - من ضيقة إلى مربعة إلى قصيرة وواسعة.

تقييد إعدادات البيان minAspectRatio وmaxAspectRatio نسبة العرض إلى الارتفاع الخاصة بتطبيقك إلى القيم غير القابلة للتغيير

✓ تنفيذ

اضبط تطبيقك ليلائم الشاشة بغض النظر عن الأبعاد النسبية.

إزالة إعدادات minAspectRatio وmaxAspectRatio من تطبيقك البيان. أو تأكَّد من إمكانية تغيير حجم تطبيقك وأنّ نسبة العرض إلى الارتفاع تعتمد على نفسها. (اطّلِع على القسم إمكانية إعادة التعديل).

✗ لا تفعل

لا تحاول التحكم في الأبعاد النسبية لتطبيقك. إذا كان تطبيقك يعمل على الشاشة أو في نافذة ذات نسبة عرض إلى ارتفاع غير متوافقة مع نسبة العرض إلى الارتفاع للتطبيق، يكون تطبيقك مُعدّ للعرض على شاشة عريضة أفقيًا.

في نظام التشغيل Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للمستخدمين إلغاء نسبة العرض إلى الارتفاع في التطبيق. لتوسيع التطبيقات المُعدّة للعرض على شاشة عريضة أفقيًا بملء مساحة العرض المتاحة. عرض الجهاز وضع التوافق.

حجم النافذة

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

توفر فئات حجم النوافذ طريقة منهجية لتحديد وتصنيف حجم نافذة التطبيق. تكييف التطبيق من خلال تغيير التنسيقات كنافذة تغير فئة الحجم لتطبيقك.

✓ تنفيذ

يمكنك تقييم حجم نافذة تطبيقك استنادًا إلى فئات حجم النافذة.

لتحديد فئة حجم النافذة، استخدِم السمة currentWindowAdaptiveInfo(). ذات المستوى الأعلى للمكتبة التكيُّفية في Compose Material 3. لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء تطبيقات تكيُّفية.

✗ لا تفعل

لا تتجاهل فائدة تعريفات فئة حجم النافذة و من واجهات برمجة التطبيقات المدمَجة. لا تستخدِم واجهات برمجة التطبيقات المتوقّفة لحساب حجم النافذة.

واجهات برمجة التطبيقات التي تم إيقافها نهائيًا

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

✓ تنفيذ

يمكنك استخدام WindowManager#getCurrentWindowMetrics() WindowMetrics#getBounds() للاطّلاع على حجم نافذة التطبيق. استخدام WindowMetrics#getDensity() للاطّلاع على كثافة العرض.

✗ لا تفعل

عدم استخدام واجهات برمجة تطبيقات Display المتوقّفة نهائيًا التالية لتحديد حجم النافذة:

  • getSize(): تم إيقافها نهائيًا في Android 11 (المستوى 30 من واجهة برمجة التطبيقات)
  • getMetrics(): تم إيقافها نهائيًا في Android 11 (المستوى 30 من واجهة برمجة التطبيقات)
  • getRealSize(): تم إيقافها نهائيًا في Android 12 (المستوى 31 من واجهة برمجة التطبيقات)
  • getRealMetrics(): تم إيقافها نهائيًا في Android 12 (المستوى 31 من واجهة برمجة التطبيقات)

إنشاء

تم تصميم Jetpack Compose لتطوير واجهة المستخدم بشكل تكيُّفي. بدون تنسيق XML أو تنسيق من الملفات، لا يوجد مؤهِّلات للموارد. عناصر قابلة للإنشاء بدون حالة استنادًا إلى Kotlin فقط مثل Column وRow وBox التي تصف واجهة المستخدم وأدوات التعديل مثل offset وpadding وsize التي تضيف سلوكًا إلى واجهة المستخدم. عناصر.

✓ تنفيذ

الإنشاء باستخدام Compose واكِب أحدث الميزات والإصدارات.

✗ لا تفعل

لا تعتمد على تكنولوجيا قديمة. لا تدع تطبيقك قديمًا.

إنشاء مكتبة تكيُّفية في Material 3

توفّر مكتبة Compose Material 3 Adaptive المكوّنات وواجهات برمجة التطبيقات التي وتسهيل تطوير التطبيقات التكيفية.

✓ تنفيذ

استخدِم واجهات برمجة التطبيقات التالية لجعل تطبيقك تكيّفيًا:

  • NavigationSuiteScaffold: للتبديل بين شريط التنقّل و شريط التنقل اعتمادًا على فئة حجم نافذة التطبيق
  • ListDetailPaneScaffold: لتنفيذ التنسيق الأساسي لصفحة تفاصيل القائمة. تعمل هذه الميزة على تعديل التنسيق ليلائم حجم نافذة التطبيق.
  • SupportingPaneScaffold: لتنفيذ لوحة الدعم الأساسية التصميم.
✗ لا تفعل

لا تبتكر العجلة من جديد. لا تفوِّت فرصة تحقيق أرباح إضافية للمطوّرين التي توفرها جميع مكتبات Jetpack Compose.

التنسيقات

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

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

✓ تنفيذ

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

تنظيم المحتوى في أجزاء لتفعيل تخطيطات متعددة الأجزاء مثل عرض قائمة بالتفاصيل وجزء الدعم لعمليات عرض المحتوى الديناميكي.

✓ التنفيذ: ضع قائمة بالأنشطة التي تم تنظيمها في تنسيق ثنائي اللوحة وتفصيلها.
✗ لا تفعل

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

✗ لا يجب: تم تمديد التنسيق لملء النافذة الموسّعة.

أجهزة إدخال البيانات

لا يستخدم المستخدمون الشاشات التي تعمل باللمس فقط للتفاعل مع التطبيقات.

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

✓ تنفيذ

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

استخدام مكتبة Material 3 في Jetpack لتمكين المستخدمين من الكتابة في أي مكوّن TextField باستخدام قلم شاشة.

✗ لا تفعل

لا تجعل أساليب الإدخال البديلة مستحيلة. عدم تقديم ميزة تسهيل الاستخدام المشكلات.

ملخّص

  • إنشاء تطبيقك باستخدام Compose ومكتبة Material 3 Adaptive
  • التخطيطات الأساسية لفئات حجم النوافذ
  • إنشاء تصميمات متعددة الأجزاء
  • تغيير حجم التطبيق
  • عدم قفل اتجاه النشاط مطلقًا
  • عدم تقييد نسبة العرض إلى الارتفاع
  • دعم الإدخال بخلاف اللمس
  • تجنُّب واجهات برمجة التطبيقات المتوقّفة نهائيًا

✓ تنفيذ ما يتوقّعه المستخدمون: تحسين تطبيقك للتوافق مع مجموعة متنوعة من الأجهزة التي يعتمد عليها الأشخاص يوميًا.

✗ لا تنتظر. ابدأ الآن!