اتجاه التطبيق ونسبة العرض إلى الارتفاع وإمكانية تغيير حجمه
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعمل تطبيقات Android على جميع أنواع الأجهزة: الهواتف والأجهزة اللوحية والأجهزة القابلة للطي
وأجهزة Chromebook والسيارات وأجهزة التلفزيون وحتى أجهزة الواقع المعزّز. للتكيّف مع هذه البيئة المتنوعة، يجب أن يكون
تطبيقك متوافقًا مع جميع أشكال الأجهزة وأحجام الشاشات.
يتيح نظام Android 16 (المستوى 36 لواجهة برمجة التطبيقات) للتطبيقات التكيّف مع أشكال الأجهزة وأحجام الشاشة المختلفة من خلال إلغاء قيود التطبيقات المتعلقة باتجاه الشاشة وعلاقتها بالشاشة وبإمكانية تغيير حجمها. تنطبق عمليات الاستبدال على الأجهزة التي يكون أصغر عرض لها أكبر من أو يساوي
600dp، ما يحدّد ما يلي:
الأجهزة اللوحية
الشاشات الداخلية للهواتف القابلة للطيّ ذات الشاشة الكبيرة
العرض في نافذة (على جميع أنواع الأجهزة)
يمكن تغيير حجم التطبيقات التي تستهدف المستوى 36 لواجهة برمجة التطبيقات ويمكنها الدخول إلى وضع المتعدّد النوافذ (الذي يعادل resizeableActivity="true") إذا كان أصغر عرض
للشاشة أكبر من أو يساوي 600dp.
الشكل 1. كانت خلاصة "أخبار المطوّرين" تظهر سابقًا بتنسيق شاشة عريضة على الأجهزة ذات الشاشات الكبيرة (على يمين الشاشة)، ولكن يتم عرضها الآن بملء الشاشة عند استهداف Android 16
(على يمين الشاشة).
يفرض نظام التشغيل Android 16 نموذجًا متسقًا لتصميم التطبيقات التكيُّفية الذي يحسِّن
تجربة المستخدم من خلال مراعاة الإعدادات المفضّلة للمستخدم في ما يتعلّق باتجاه الجهاز ونسبة
العرض إلى الارتفاع وحجم الشاشة.
التغييرات
يتم تجاهل سمات البيان وواجهات برمجة التطبيقات التالية للتطبيقات التي تستهدف
Android 16 (المستوى 36 لواجهة برمجة التطبيقات) على الشاشات الكبيرة:
يمكنك نشر لعبتك باستخدام مجموعات حزمات تطبيق Android وميزة "توقيع التطبيق" من Play، ما يسمح لـ Google Play بإدارة العلامة وتقديم مزايا حِزم التطبيقات تلقائيًا. اطّلِع أيضًا على نظرة عامة على بيان التطبيق.
تفعيل المستخدم للسلوك التلقائي للتطبيق في إعدادات نسبة العرض إلى الارتفاع
إيقاف
لإيقاف سلوك مستوى واجهة برمجة التطبيقات 36، يجب الإفصاح عن ملف بيان
PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.
لإيقاف ميزة معيّنة، اضبط الموقع في عنصر <activity>:
لاختبار ما إذا كان تطبيقك يتأثر بتغييرات Android 16، استخدِم محاكيَي Pixel
Tablet وPixel Fold في Android Studio واضبط
targetSdkPreview = "Baklava" في ملف build.gradle الخاص بالوحدة في تطبيقك.
قد تؤدي التطبيقات التي تحدّ من اتجاه الجهاز أو نسبة العرض إلى الارتفاع أو إمكانية تغيير حجم التطبيق إلى
حدوث مشاكل في العرض على نظام Android 16، مثل تصاميم الشاشة المتداخلة.
لتوفير تجربة مثالية للمستخدمين على الهواتف أو الأجهزة القابلة للطي أو الأجهزة اللوحية أو
أجهزة Chromebook أو شاشات السيارات أو أجهزة الواقع المعزّز، يجب تصميم تطبيقك بحيث يكون سريع الاستجابة وقابلًا للتكيّف:
تجنَّب مكونات واجهة المستخدم الممدودة: من المرجّح أن لا تتوافق التنسيقات المصمّمة لشاشات الهواتف العادية في الوضع العمودي
مع نسب العرض إلى الارتفاع الأخرى. على سبيل المثال، ستظهر عناصر واجهة المستخدم التي تملأ العرض الكامل للشاشة ممدودة في الوضع الأفقي. أضِف الحد الأقصى للعرض إلى المكوّنات لتجنُّب تمديدها.
تفعيل إمكانية الانتقال للأعلى أو للأسفل في التنسيقات: إذا لم يكن بإمكان المستخدمين الانتقال للأعلى أو للأسفل في التنسيقات، قد لا يتمكّنوا من الوصول إلى الأزرار أو عناصر واجهة المستخدم الأخرى التي تظهر خارج الشاشة في الوضع المُسطَّح. فعِّل تنسيقات التطبيق للانتقال إلى أعلى أو أسفل الصفحة لضمان إمكانية الوصول إلى كل المحتوى
بغض النظر عن ارتفاع الشاشة.
التأكّد من توافق الكاميرا في الوضعَين العمودي والأفقي: يمكن أن تؤدي معاينات عدسة الكاميرا التي تعتمد نسبة عرض إلى ارتفاع واتجاهًا معيّنين بالنسبة إلى كاميرا رصد الإطارات
إلى ظهور معاينات ممدودة أو مقلوبة على الشاشات غير المتوافقة. تأكَّد من أنّ عدسات الكاميرا المخصّصة للعرض تدور بشكلٍ صحيح مع تغييرات الاتجاه.
فعِّل عدسات الكاميرا لتتلاءم مع نسب العرض إلى الارتفاع لواجهة المستخدم التي تختلف عن نسبة العرض إلى الارتفاع لجهاز الاستشعار.
الحفاظ على الحالة أثناء تغيير حجم النافذة: يمكن أن تؤدي إزالة القيود المفروضة على الاتجاه
ونسبة العرض إلى الارتفاع إلى تغييرات متكررة في حجم نافذة التطبيق
استجابةً للطريقة التي يفضّل بها المستخدمون استخدام التطبيق، على سبيل المثال، من خلال تدوير الجهاز
أو طيّه أو فتحه أو تغيير حجم التطبيق في وضع النوافذ المتعدّدة أو
وضع النوافذ على سطح المكتب. تؤدي تغييرات الضبط، مثل تغييرات الاتجاه
وتغيير حجم النافذة، إلى إعادة إنشاء النشاط (تلقائيًا). لضمان
تقديم تجربة مثالية للمستخدم، يجب الحفاظ على حالة التطبيق أثناء تغييرات الإعدادات كي
يحتفظ تطبيقك بالبيانات (مثل الإدخال في النموذج) ويمكن للمستخدمين الحفاظ على السياق.
استخدام فئات أحجام النوافذ: تتيح هذه الفئات استخدام أحجام نوافذ مختلفة ونسب مختلفة من العرض إلى الارتفاع بدون إجراء تخصيصات خاصة بالأجهزة. افترض أنّ أحجام النوافذ
ستتغيّر بشكل متكرّر. استخدِم فئات أحجام النوافذ لتحديد سمات
سمات النافذة، ثم طبِّق تنسيقًا تكيُّفيًا مناسبًا.
إنشاء تنسيقات متجاوبة: ضمن فئات حجم النوافذ، تتغيّر التنسيقات المتجاوبة
استجابةً للتغييرات في سمات العرض لإنشاء عرض مثالي للتطبيق
في جميع الأوقات.
المخطط الزمني
Android 16 (2025): توفُّر جميع الاتجاهات ونسَب العرض إلى الارتفاع،
وإمكانية تغيير حجم التطبيق هي التجربة الأساسية للأجهزة ذات الشاشات الكبيرة
(أصغر عرض للشاشة >= 600dp) للتطبيقات التي تستهدف المستوى 36 لواجهة برمجة التطبيقات. ومع ذلك، يمكن للمطوّرين إيقاف هذه الميزة.
إصدار Android في عام 2026: سيكون توافق جميع الاتجاهات ونسَب العرض إلى الارتفاع
وإمكانية تغيير حجم التطبيق هو التجربة الأساسية لأجهزة الشاشة الكبيرة (أصغر عرض شاشة >= 600dp) للتطبيقات التي تستهدف المستوى 37 لواجهة برمجة التطبيقات.
ولن يتوفّر للمطوّرين خيار إيقاف هذه الميزة.
مستوى واجهة برمجة التطبيقات المستهدف
الأجهزة المعنيّة
السماح للمطوّر بإيقاف الميزة
36 (Android 16)
الأجهزة ذات الشاشات الكبيرة (أصغر عرض شاشة >= 600dp)
نعم
37 (متوقّعة)
الأجهزة ذات الشاشات الكبيرة (أصغر عرض شاشة >= 600dp)
لا
تختلف المُدد النهائية لاستهداف مستويات معيّنة لواجهة برمجة التطبيقات حسب متجر التطبيقات. اعتبارًا من آب (أغسطس) 2026، سيطلب Google
Play من التطبيقات استهداف المستوى 36 لواجهة برمجة التطبيقات، واعتبارًا من آب (أغسطس) 2027، سيطلب المستوى 37.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# App orientation, aspect ratio, and resizability\n\nAndroid apps run on devices of all kinds: phones, tablets, foldables,\nChromebooks, cars, TVs, and even XR. To adapt to this varied environment, your\napp should support all device form factors and display sizes.\n\nAndroid 16 (API level 36) enables apps to adapt to different form factors and\ndisplay sizes by overriding app restrictions for screen orientation, aspect\nratio, and resizability. The overrides apply to devices with smallest width \\\u003e=\n600dp which defines the following:\n\n- Tablets\n- Inner displays of large screen foldables\n- Desktop windowing (on all form factors)\n\nApps that target API level 36 are resizable and able to enter multi‑window\nmode (equivalent to [`resizeableActivity=\"true\"`](/guide/topics/manifest/activity-element#resizeableActivity)) if the display's smallest\nwidth is \\\u003e= 600dp.\n**Figure 1.** Developer News feed previously letterboxed on large screen devices (left) runs full screen when targeting Android 16 (right).\n\nAndroid 16 enforces a consistent model of adaptive app design that optimizes the\nuser experience by respecting user preferences for device orientation, aspect\nratio, and display size.\n\nChanges\n-------\n\nThe following manifest attributes and APIs are ignored for apps targeting\nAndroid 16 (API level 36) on large screens:\n\n| Attribute or API | Ignored values |\n|---------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|\n| `screenOrientation` | `portrait`, `landscape`, `reversePortrait`, `reverseLandscape`, `sensorPortrait`, `sensorLandscape`, `userPortrait`, `userLandscape` |\n| `resizeableActivity` | all |\n| `minAspectRatio` | all |\n| `maxAspectRatio` | all |\n| `setRequestedOrientation()` `getRequestedOrientation()` | `portrait`, `landscape`, `reversePortrait`, `reverseLandscape`, `sensorPortrait`, `sensorLandscape`, `userPortrait`, `userLandscape` |\n\nExceptions\n----------\n\nExceptions to the Android 16 changes include the following:\n\n- Displays smaller than sw600dp (most phones, flippables, and outer displays\n of large screen foldables)\n\n- Games, based on the [`android:appCategory`](/guide/topics/manifest/application-element#appCategory) flag\n\n Publish your game using Android App Bundles and Play App Signing, allowing\n Google Play to manage the flag and provide the benefits of app bundles\n automatically. See also [App manifest overview](/guide/topics/manifest/manifest-intro).\n- User opt in to app's default behavior in the aspect ratio settings\n\nOpt out\n-------\n\nTo opt out of the API level 36 behavior, declare the\n`PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY` manifest property.\n\nTo opt out for a specific activity, set the property in the `\u003cactivity\u003e`\nelement: \n\n \u003cactivity ...\u003e\n \u003cproperty\n android:name=\"android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY\"\n android:value=\"true\" /\u003e\n ...\n \u003c/activity\u003e\n\nTo opt out for your entire app, set the property in the `\u003capplication\u003e` element: \n\n \u003capplication ...\u003e\n \u003cproperty\n android:name=\"android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY\"\n android:value=\"true\" /\u003e\n ...\n \u003c/application\u003e\n\n| **Warning:** The Android framework will eliminate the opt-out capability in API level 37. For apps that target API level 37 or higher, orientation, aspect ratio, and resizability restrictions will always be ignored on displays that are at least sw600dp.\n\nTests\n-----\n\nTo test whether your app is impacted by the Android 16 changes, use the Pixel\nTablet and Pixel Fold series emulators in Android Studio and set\n`targetSdkPreview = \"Baklava\"` in your app's module `build.gradle` file.\n\nOr use the app compatibility framework on your test devices by enabling the\n[UNIVERSAL_RESIZABLE_BY_DEFAULT](/about/versions/16/reference/compat-framework-changes#universal_resizable_by_default) flag (see [Compatibility framework tools](/guide/app-compatibility/test-debug)).\n\nYou can automate testing with the [Espresso](/training/testing/espresso) testing framework and [Jetpack\nCompose testing APIs](/develop/ui/compose/testing/apis).\n\nCommon problems\n---------------\n\nApps that restrict device orientation, aspect ratio, or app resizability might\nhave display issues on Android 16, such as overlapping layouts.\n\nTo provide an optimal user experience on phones, foldables, tablets,\nChromebooks, car displays, or XR, build your app to be responsive and adaptive:\n\n- **Avoid stretched UI components:** Layouts designed for standard, portrait\n phone screens will likely fail to accommodate other aspect ratios. For\n example, UI elements that fill the entire width of the display will appear\n stretched in landscape orientation. Add a maximum width to components to\n avoid stretching.\n\n- **Enable layouts to scroll:** If layouts don't scroll, users might not be\n able to access buttons or other UI elements that are off screen in landscape\n orientation. Enable app layouts to scroll to ensure all content is reachable\n regardless of the height of the display.\n\n- **Ensure camera compatibility in portrait and landscape:** Camera viewfinder\n previews that assume a specific aspect ratio and orientation relative to the\n camera sensor can result in stretched or flipped previews on nonconforming\n displays. Ensure viewfinders rotate properly with orientation changes.\n Enable viewfinders to adjust to UI aspect ratios that differ from the sensor\n aspect ratio.\n\n- **Preserve state during window size changes:** The removal of orientation\n and aspect ratio restrictions can result in frequent app window size changes\n in response to how users prefer to use an app, for example, by rotating,\n folding, or unfolding a device or by resizing an app in multi-window or\n desktop windowing mode. Configuration changes such as orientation changes\n and window resizing cause activity recreation (by default). To ensure an\n optimal user experience, preserve app state during configuration changes so\n your app retains data (such as form input) and users can maintain context.\n\n- **Use window size classes:** Support different window sizes and aspect\n ratios without device‑specific customizations. Assume window sizes\n will change frequently. Use window size classes to characterize the window\n dimensions, and then apply an appropriate adaptive layout.\n\n- **Build responsive layouts:** Within window size classes, responsive layouts\n adjust to changes in display dimensions to always create an optimal app\n presentation.\n\nTimeline\n--------\n\n- **Android 16 (2025):** Support for all orientations and aspect ratios and\n for app resizability is the baseline experience for large screen devices\n (smallest screen width \\\u003e= 600dp) for apps that target API level 36. However,\n developers can opt out.\n\n- **Android release in 2026:** Support for all orientations and aspect ratios\n and for app resizability will be the baseline experience for large screen\n devices (smallest screen width \\\u003e= 600dp) for apps that target API level 37.\n Developers will not have an option to opt out.\n\n| Target API level | Applicable devices | Developer opt out allowed |\n|------------------|--------------------------------------------------------|---------------------------|\n| 36 (Android 16) | Large screen devices (smallest screen width \\\u003e= 600dp) | Yes |\n| 37 (Anticipated) | Large screen devices (smallest screen width \\\u003e= 600dp) | No |\n\nThe deadlines for targeting specific API levels are app store specific. Google\nPlay will require apps to target API level 36 as of August 2026, API level 37 as\nof August 2027.\n\nAdditional resources\n--------------------\n\n- [Behavior changes: Apps targeting Android 16 or higher](/about/versions/16/behavior-changes-16)\n- [Build adaptive apps](/develop/ui/compose/build-adaptive-apps)\n- [Adaptive do's and don'ts](/develop/ui/compose/layouts/adaptive/adaptive-dos-and-donts)"]]