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