اتجاه التطبيق ونسبة العرض إلى الارتفاع وإمكانية تغيير حجمه

تعمل تطبيقات Android على جميع أنواع الأجهزة: الهواتف والأجهزة اللوحية والأجهزة القابلة للطي وأجهزة Chromebook والسيارات وأجهزة التلفزيون وحتى أجهزة الواقع المعزّز. للتكيّف مع هذه البيئة المتنوعة، يجب أن يكون تطبيقك متوافقًا مع جميع أشكال الأجهزة وأحجام الشاشات.

يتيح نظام Android 16 (المستوى 36 لواجهة برمجة التطبيقات) للتطبيقات التكيّف مع أشكال الأجهزة وأحجام الشاشة المختلفة من خلال إلغاء قيود التطبيقات المتعلقة باتجاه الشاشة وعلاقتها بالشاشة وبإمكانية تغيير حجمها. تنطبق عمليات الاستبدال على الأجهزة التي يكون أصغر عرض لها أكبر من أو يساوي 600dp، ما يحدّد ما يلي:

  • الأجهزة اللوحية
  • الشاشات الداخلية للهواتف القابلة للطيّ ذات الشاشة الكبيرة
  • العرض في نافذة (على جميع أنواع الأجهزة)

يمكن تغيير حجم التطبيقات التي تستهدف المستوى 36 لواجهة برمجة التطبيقات ويمكنها الدخول إلى وضع المتعدّد النوافذ (الذي يعادل resizeableActivity="true") إذا كان أصغر عرض للشاشة أكبر من أو يساوي 600dp.

يتم عرض التطبيق بتنسيق مربّع على جهاز بشاشة كبيرة غير مطوي قبل Android 16، ولكن يتم عرضه بملء الشاشة عند استهداف Android 16. يعرض التطبيق المزيد من الأخبار عند عرضها بملء الشاشة بدلاً من عرضها على شاشة عريضة أفقيًا.
الشكل 1. كانت خلاصة "أخبار المطوّرين" تظهر سابقًا بتنسيق شاشة عريضة على الأجهزة ذات الشاشات الكبيرة (على يمين الشاشة)، ولكن يتم عرضها الآن بملء الشاشة عند استهداف Android 16 (على يمين الشاشة).

يفرض نظام التشغيل Android 16 نموذجًا متسقًا لتصميم التطبيقات التكيُّفية الذي يحسِّن تجربة المستخدم من خلال مراعاة الإعدادات المفضّلة للمستخدم في ما يتعلّق باتجاه الجهاز ونسبة العرض إلى الارتفاع وحجم الشاشة.

التغييرات

يتم تجاهل سمات البيان وواجهات برمجة التطبيقات التالية للتطبيقات التي تستهدف Android 16 (المستوى 36 لواجهة برمجة التطبيقات) على الشاشات الكبيرة:

السمة أو واجهة برمجة التطبيقات القيم التي تم تجاهلها
screenOrientation portrait، landscape، reversePortrait، reverseLandscape، sensorPortrait، sensorLandscape، userPortrait، userLandscape
resizeableActivity الكل
minAspectRatio الكل
maxAspectRatio الكل
setRequestedOrientation()

getRequestedOrientation()
portrait، landscape، reversePortrait، reverseLandscape، sensorPortrait، sensorLandscape، userPortrait، userLandscape

الاستثناءات

تشمل الاستثناءات من التغييرات في Android 16 ما يلي:

  • الشاشات الأصغر من sw600dp (معظم الهواتف والشاشات القابلة للطي والشاشات الخارجية للأجهزة القابلة للطي ذات الشاشة الكبيرة)

  • الألعاب، استنادًا إلى علامة android:appCategory

    يمكنك نشر لعبتك باستخدام مجموعات حزمات تطبيق Android وميزة "توقيع التطبيق" من Play، ما يسمح لـ Google Play بإدارة العلامة وتقديم مزايا حِزم التطبيقات تلقائيًا. اطّلِع أيضًا على نظرة عامة على بيان التطبيق.

  • تفعيل المستخدم للسلوك التلقائي للتطبيق في إعدادات نسبة العرض إلى الارتفاع

إيقاف

لإيقاف سلوك مستوى واجهة برمجة التطبيقات 36، يجب الإفصاح عن ملف بيان PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.

لإيقاف ميزة معيّنة، اضبط الموقع في عنصر <activity>:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

لإيقاف الميزة في تطبيقك بالكامل، اضبط السمة في عنصر <application>:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

الاختبارات

لاختبار ما إذا كان تطبيقك يتأثر بتغييرات Android 16، استخدِم محاكيَي Pixel Tablet وPixel Fold في Android Studio واضبط targetSdkPreview = "Baklava" في ملف build.gradle الخاص بالوحدة في تطبيقك.

أو يمكنك استخدام إطار عمل توافق التطبيقات على أجهزتك الاختبارية من خلال تفعيل العلامة UNIVERSAL_RESIZABLE_BY_DEFAULT (راجِع أدوات إطار عمل التوافق).

يمكنك برمجة الاختبار باستخدام إطار عمل اختبار Espresso وواجهات برمجة تطبيقات اختبار Compose في Jetpack.

المشاكل الشائعة

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

لتوفير تجربة مثالية للمستخدمين على الهواتف أو الأجهزة القابلة للطي أو الأجهزة اللوحية أو أجهزة Chromebook أو شاشات السيارات أو أجهزة الواقع المعزّز، يجب تصميم تطبيقك بحيث يكون سريع الاستجابة وقابلًا للتكيّف:

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

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

  • التأكّد من توافق الكاميرا في الوضعَين العمودي والأفقي: يمكن أن تؤدي معاينات عدسة الكاميرا التي تعتمد نسبة عرض إلى ارتفاع واتجاهًا معيّنين بالنسبة إلى كاميرا رصد الإطارات إلى ظهور معاينات ممدودة أو مقلوبة على الشاشات غير المتوافقة. تأكَّد من أنّ عدسات الكاميرا المخصّصة للعرض تدور بشكلٍ صحيح مع تغييرات الاتجاه. فعِّل عدسات الكاميرا لتتلاءم مع نسب العرض إلى الارتفاع لواجهة المستخدم التي تختلف عن نسبة العرض إلى الارتفاع لجهاز الاستشعار.

  • الحفاظ على الحالة أثناء تغيير حجم النافذة: يمكن أن تؤدي إزالة القيود المفروضة على الاتجاه ونسبة العرض إلى الارتفاع إلى تغييرات متكررة في حجم نافذة التطبيق استجابةً للطريقة التي يفضّل بها المستخدمون استخدام التطبيق، على سبيل المثال، من خلال تدوير الجهاز أو طيّه أو فتحه أو تغيير حجم التطبيق في وضع النوافذ المتعدّدة أو وضع النوافذ على سطح المكتب. تؤدي تغييرات الضبط، مثل تغييرات الاتجاه وتغيير حجم النافذة، إلى إعادة إنشاء النشاط (تلقائيًا). لضمان تقديم تجربة مثالية للمستخدم، يجب الحفاظ على حالة التطبيق أثناء تغييرات الإعدادات كي يحتفظ تطبيقك بالبيانات (مثل الإدخال في النموذج) ويمكن للمستخدمين الحفاظ على السياق.

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

  • إنشاء تنسيقات متجاوبة: ضمن فئات حجم النوافذ، تتغيّر التنسيقات المتجاوبة استجابةً للتغييرات في سمات العرض لإنشاء عرض مثالي للتطبيق في جميع الأوقات.

المخطط الزمني

  • Android 16 (2025): توفُّر جميع الاتجاهات ونسَب العرض إلى الارتفاع، وإمكانية تغيير حجم التطبيق هي التجربة الأساسية للأجهزة ذات الشاشات الكبيرة (أصغر عرض للشاشة >= 600dp) للتطبيقات التي تستهدف المستوى 36 لواجهة برمجة التطبيقات. ومع ذلك، يمكن للمطوّرين إيقاف هذه الميزة.

  • إصدار Android في عام 2026: سيكون توافق جميع الاتجاهات ونسَب العرض إلى الارتفاع وإمكانية تغيير حجم التطبيق هو التجربة الأساسية لأجهزة الشاشة الكبيرة (أصغر عرض شاشة >= 600dp) للتطبيقات التي تستهدف المستوى 37 لواجهة برمجة التطبيقات. ولن يتوفّر للمطوّرين خيار إيقاف هذه الميزة.

مستوى واجهة برمجة التطبيقات المستهدف الأجهزة المعنيّة السماح للمطوّر بإيقاف الميزة
36 (Android 16) الأجهزة ذات الشاشات الكبيرة (أصغر عرض شاشة >= 600dp) نعم
37 (متوقّعة) الأجهزة ذات الشاشات الكبيرة (أصغر عرض شاشة >= 600dp) لا

تختلف المُدد النهائية لاستهداف مستويات معيّنة لواجهة برمجة التطبيقات حسب متجر التطبيقات. اعتبارًا من آب (أغسطس) 2026، سيطلب Google Play من التطبيقات استهداف المستوى 36 لواجهة برمجة التطبيقات، واعتبارًا من آب (أغسطس) 2027، سيطلب المستوى 37.

مراجع إضافية