تتوافق التطبيقات المتكيّفة مع الشاشات بجميع أحجامها، مثل شاشة الجهاز بأكملها والنوافذ القابلة لتغيير الحجم في وضع النوافذ المتعددة والوضعَين العمودي والأفقي وشاشات الأجهزة القابلة للطي سواء كانت مطوية أو غير مطوية.
تتيح لك قائمة قصيرة من إعدادات الضبط وواجهات برمجة التطبيقات إنشاء تطبيقات متكيّفة. ومع ذلك، لا تتوافق بعض الإعدادات وواجهات برمجة التطبيقات القديمة مع التطبيقات المتكيّفة، ويجب تجنُّب استخدامها.
إمكانية تغيير الحجم
تتيح التطبيقات المتكيّفة تغيير حجم التطبيق ووضع النوافذ المتعددة.
تتيح السمة resizeableActivity لعنصرَي البيان <activity> و<application> تفعيل وضع النوافذ المتعددة أو إيقافه على الإصدار 11 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 30) والإصدارات الأقدم. في نظام التشغيل Android 12 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، تتيح الشاشات الكبيرة وضع النوافذ المتعدّدة بغض النظر عن السمة. لمزيد من المعلومات، يُرجى الاطّلاع على استخدام وضع النوافذ المتعددة.
فعِّل تطبيقك للمشاركة في سيناريوهات النوافذ المتعددة وتنفيذ المهام المتعددة من أجل زيادة إنتاجية المستخدمين ورضاهم.
اضبط القيمة resizeableActivity="true" إذا كان تطبيقك يستهدف مستويات واجهة برمجة التطبيقات الأقل من 24، وإلا فلا داعي لذلك لأنّ القيمة true تكون تلقائية في الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث.
لا تضبط resizeableActivity="false" لأي مستوى لواجهة برمجة التطبيقات. لا تستبعد تطبيقك من حالات الاستخدام التي تتضمّن وضع النوافذ المتعددة.
الاتجاه
تتيح التطبيقات المتكيّفة استخدام الوضعَين العمودي والأفقي بغض النظر عن حجم الشاشة أو وضع النوافذ.
يقيّد إعداد البيان screenOrientation اتجاه النشاط.
أزِل إعداد screenOrientation من بيان تطبيقك.
لا يمنع قفل اتجاه التطبيقات تغيير حجم النافذة. تتم إعادة تحجيم التطبيقات عند الانتقال إلى وضع النوافذ المتعددة، أو عند طي الجهاز أو فتحه، أو عند إعادة تحجيم نافذة من نوع سطح المكتب. يجب أن يتيح تطبيقك إمكانية تغيير حجم النافذة بغض النظر عن إعداد السمة screenOrientation.
عدم حصر اتجاه النشاط يتم عرض التطبيقات التي تقفل اتجاه الشاشة في مربّع أسود على أجهزة الشاشة الكبيرة وأحجام النوافذ غير المتوافقة.
تكون التطبيقات التي تظهر في مربّع عرض أقل عرضة للعثور عليها على Google Play على الأجهزة اللوحية والهواتف القابلة للطي وأجهزة ChromeOS.
نسبة العرض إلى الارتفاع
تختلف أحجام الشاشات والنوافذ، وبالتالي تختلف نِسب العرض إلى الارتفاع، بدءًا من النسبة الطويلة والضيقة، إلى المربّعة، إلى القصيرة والعريضة.
تفرض إعدادات البيان minAspectRatio وmaxAspectRatio قيودًا على نسبة العرض إلى الارتفاع في تطبيقك، وذلك باستخدام قيم مبرمَجة ثابتة.
تكييف تطبيقك ليتناسب مع الشاشة بغض النظر عن الأبعاد النسبية
أزِل الإعدادَين minAspectRatio وmaxAspectRatio من بيان تطبيقك. أو تأكَّد من إمكانية تغيير حجم تطبيقك، وستتم معالجة نسبة العرض إلى الارتفاع تلقائيًا (راجِع قسم إمكانية تغيير الحجم).
لا تحاول التحكّم في الأبعاد النسبية لتطبيقك. إذا كان تطبيقك يعمل على شاشة أو في نافذة بنسبة عرض إلى ارتفاع غير متوافقة مع نسبة العرض إلى الارتفاع في التطبيق، فسيتم عرض تطبيقك في وضع مُعد للعرض على شاشة عريضة أفقيًا.
في نظام التشغيل Android 14 (مستوى واجهة برمجة التطبيقات 34) والإصدارات الأحدث، يمكن للمستخدمين تجاهل نسبة العرض إلى الارتفاع في التطبيق لتوسيع التطبيقات التي تظهر في مربّع إلى أن تملأ مساحة العرض المتاحة. اطّلِع على وضع التوافق مع الأجهزة.
حجم النافذة
إنّ تحسين التنسيقات لتناسب أحجام الشاشات المختلفة هو الفرضية الأساسية للتصميم التكيّفي. تركّز التطبيقات التكيُّفية على حجم نافذة التطبيق بدلاً من حجم شاشة الجهاز. عندما يكون التطبيق في وضع ملء الشاشة، تكون نافذة التطبيق هي شاشة الجهاز.
توفّر فئات حجم النافذة طريقة منهجية لتحديد حجم نافذة التطبيق وتصنيفها. يمكنك تعديل تطبيقك من خلال تغيير التصميمات عند تغيُّر فئة حجم النافذة في تطبيقك.
تقييم حجم نافذة تطبيقك استنادًا إلى فئات حجم النافذة
لتحديد فئة حجم النافذة، استخدِم دالة currentWindowAdaptiveInfo() ذات المستوى الأعلى في مكتبة Compose Material 3 Adaptive. لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء تطبيقات متجاوبة.
لا تتجاهل فائدة تعريفات فئات حجم النافذة وواجهات برمجة التطبيقات المضمّنة. لا تستخدِم واجهات برمجة التطبيقات المتوقّفة نهائيًا لحساب حجم النافذة.
واجهات برمجة التطبيقات المتوقّفة نهائيًا
لا تقيس واجهات برمجة التطبيقات القديمة للنظام الأساسي نافذة التطبيق بشكل صحيح، إذ يقيس بعضها شاشة الجهاز، ويستبعد بعضها عناصر واجهة النظام.
استخدِم 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 Adaptive مكوّنات وواجهات برمجة تطبيقات تسهّل عملية تطوير التطبيقات المتكيّفة.
استخدِم واجهات برمجة التطبيقات التالية لجعل تطبيقك قابلاً للتكيّف:
NavigationSuiteScaffold: للتبديل بين شريط التنقّل وشريط التنقّل الجانبي حسب فئة حجم نافذة التطبيق.-
ListDetailPaneScaffold: تنفّذ التنسيق الأساسي الخاص بعرض على شكل قائمة مع تفاصيل. يعدّل التخطيط حسب حجم نافذة التطبيق. -
SupportingPaneScaffold: تنفّذ التنسيق الأساسي للوحة الثانوية.
لا تعيد استخدام الأساليب نفسها. لا تفوّت مزايا زيادة إنتاجية المطوّرين التي توفّرها جميع مكتبات Jetpack Compose.
التنسيقات
يتوقّع المستخدمون أن تستفيد التطبيقات إلى أقصى حد من مساحة العرض المتاحة من خلال المحتوى التكميلي أو عناصر التحكّم المحسّنة.
تعمل التطبيقات المتكيّفة على تحسين التنسيقات استنادًا إلى التغييرات في الشاشة، وخاصةً التغييرات في حجم نافذة التطبيق أو التغييرات في وضع الجهاز.
تغيير مكوّنات واجهة المستخدم عند تغيير حجم النافذة للاستفادة من مساحة العرض المتاحة على سبيل المثال، يمكنك استبدال شريط التنقّل السفلي المستخدَم في أحجام النوافذ المصغّرة بشريط تنقّل عمودي في النوافذ المتوسطة والكبيرة. إعادة ضبط موضع مربّعات الحوار لتكون في متناول اليد على جميع شاشات العرض
نظِّم المحتوى في لوحات لتفعيل التنسيقات المتعددة اللوحات، مثل لوحة التفاصيل ولوحة الدعم لعرض المحتوى الديناميكي.
إذا كنت لا تستخدم لوحات المحتوى، لا تمدِّد عناصر واجهة المستخدم لمجرّد ملء مساحة العرض المتاحة. يصعب قراءة أسطر النص الطويلة. تبدو الأزرار الممدودة مصمَّمة بشكل سيئ. إذا كنت تستخدم Modifier.fillMaxWidth، لا تفترض أنّ هذا هو السلوك الصحيح لجميع أحجام الشاشات.
أجهزة إدخال البيانات
لا يقتصر تفاعل المستخدمين مع التطبيقات على استخدام الشاشات التي تعمل باللمس.
تتوافق التطبيقات التكيّفية مع لوحات المفاتيح والفئران وأقلام الإدخال الخارجية لتوفير تجربة مستخدم محسّنة ومساعدة المستخدمين على زيادة إنتاجيتهم على جميع أشكال الأجهزة.
يمكنك الاستفادة من الوظائف المضمّنة في إطار عمل Android للتنقّل باستخدام علامة التبويب في لوحة المفاتيح والنقر والاختيار والتمرير باستخدام الماوس أو لوحة التتبّع. انشر اختصارات لوحة المفاتيح لتطبيقك في مساعد اختصارات لوحة المفاتيح.
استخدِم مكتبة Material 3 من Jetpack للسماح للمستخدمين بالكتابة في أي مكوّن TextField باستخدام قلم شاشة.
لا تجعل أساليب الإدخال البديلة مستحيلة. عدم إدخال مشاكل متعلّقة بسهولة الاستخدام
ملخّص
- إنشاء تطبيقك باستخدام Compose ومكتبة Material 3 Adaptive
- تحديد تخطيطات أساسية استنادًا إلى فئات حجم النافذة
- إنشاء تخطيطات متعدّدة اللوحات
- إتاحة تغيير حجم تطبيقك
- عدم قفل اتجاه النشاط أبدًا
- عدم تقييد نسبة العرض إلى الارتفاع
- إتاحة إدخال البيانات بطرق أخرى غير اللمس
- تجنُّب واجهات برمجة التطبيقات المتوقفة نهائيًا
✓ تنفيذ ما يتوقّعه المستخدمون: عليك تحسين تطبيقك ليتوافق مع تنوّع الأجهزة التي يعتمد عليها المستخدمون يوميًا.
✗ لا تنتظر. ابدأ اليوم.