جهت گیری برنامه، نسبت ابعاد و قابلیت تغییر اندازه، جهت گیری برنامه، نسبت ابعاد و قابلیت تغییر اندازه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برنامههای اندروید روی انواع دستگاهها اجرا میشوند: تلفن، تبلت، تاشو، کروم بوک، ماشین، تلویزیون و حتی XR. برای انطباق با این محیط متنوع، برنامه شما باید از همه فاکتورهای شکل دستگاه و اندازه نمایش پشتیبانی کند.
Android 16 (سطح API 36) با نادیده گرفتن محدودیتهای برنامه برای جهتگیری صفحه، نسبت ابعاد و قابلیت تغییر اندازه، برنامهها را قادر میسازد تا با فاکتورهای فرم و اندازههای نمایش متفاوت سازگار شوند. موارد لغو برای دستگاه هایی با کمترین عرض >= 600dp اعمال می شود که موارد زیر را تعریف می کند:
قرص
نمایشگرهای داخلی صفحه نمایش بزرگ تاشو
پنجره دسکتاپ (بر روی همه عوامل شکل)
برنامههایی که سطح API 36 را هدف قرار میدهند، قابل تغییر اندازه هستند و میتوانند به حالت چند پنجرهای (معادل resizeableActivity="true" ) وارد شوند، اگر کمترین عرض نمایشگر >= 600dp باشد.
شکل 1. فید اخبار توسعهدهنده که قبلاً روی دستگاههای صفحهنمایش بزرگ بسته شده بود (سمت چپ) هنگام هدف قرار دادن Android 16 (راست) تمام صفحه اجرا میشود.
Android 16 یک مدل ثابت از طراحی برنامه تطبیقی را اعمال میکند که با رعایت اولویتهای کاربر برای جهتگیری دستگاه، نسبت ابعاد و اندازه نمایش، تجربه کاربر را بهینه میکند.
تغییرات
ویژگیهای مانیفست و APIهای زیر برای برنامههایی که Android 16 (سطح API 36) را در صفحههای بزرگ هدف قرار میدهند نادیده گرفته میشوند:
بازی خود را با استفاده از Android App Bundles و Play App Signing منتشر کنید، به Google Play اجازه میدهد پرچم را مدیریت کند و مزایای بستههای برنامه را به صورت خودکار ارائه دهد. همچنین نمای کلی مانیفست برنامه را ببینید.
کاربر رفتار پیشفرض برنامه را در تنظیمات نسبت ابعاد انتخاب میکند
انصراف دهید
برای انصراف از رفتار سطح 36 API، ویژگی مانیفست PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY را اعلام کنید.
برای انصراف از یک فعالیت خاص، ویژگی را در عنصر <activity> تنظیم کنید:
برای آزمایش اینکه آیا برنامه شما تحت تأثیر تغییرات Android 16 قرار گرفته است، از شبیه سازهای Pixel Tablet و Pixel Fold سری در Android Studio استفاده کنید و targetSdkPreview = "Baklava" در فایل build.gradle ماژول برنامه خود تنظیم کنید.
برنامههایی که جهتگیری دستگاه، نسبت ابعاد یا تغییر اندازه برنامه را محدود میکنند ممکن است در Android 16 مشکلات نمایشی داشته باشند، مانند همپوشانی طرحبندیها.
برای ارائه یک تجربه کاربری بهینه در تلفنها، رایانههای تاشو، رایانه لوحی، Chromebook، نمایشگر خودرو یا XR، برنامه خود را طوری بسازید که پاسخگو و سازگار باشد:
از اجزای رابط کاربری کشیده اجتناب کنید: طرحبندیهایی که برای صفحهنمایش استاندارد و پرتره تلفن طراحی شدهاند، احتمالاً با نسبتهای دیگر سازگاری ندارند. به عنوان مثال، عناصر رابط کاربری که تمام عرض نمایشگر را پر می کنند، در جهت افقی کشیده به نظر می رسند. برای جلوگیری از کشش، حداکثر عرض را به اجزا اضافه کنید.
فعال کردن طرحبندیها برای پیمایش: اگر طرحبندیها پیمایش نکنند، ممکن است کاربران نتوانند به دکمهها یا سایر عناصر رابط کاربری که در جهت افقی خارج از صفحه هستند دسترسی داشته باشند. برای اطمینان از دسترسی به تمام محتوا بدون در نظر گرفتن ارتفاع صفحه نمایش، طرحبندی برنامه را فعال کنید.
از سازگاری دوربین در حالت عمودی و افقی اطمینان حاصل کنید: پیشنمایشهای منظره یاب دوربین که نسبت ابعاد و جهتگیری خاصی را نسبت به سنسور دوربین در نظر میگیرند، میتوانند منجر به پیشنمایشهای کشیده یا برگردانده شده بر روی نمایشگرهای ناسازگار شوند. اطمینان حاصل کنید که منظره یاب ها با تغییر جهت به درستی می چرخند. منظرهیابها را فعال کنید تا نسبتهای UI را که با نسبت ابعاد حسگر متفاوت است تنظیم کنند.
حفظ حالت در هنگام تغییر اندازه پنجره: حذف محدودیتهای جهت و نسبت ابعاد میتواند منجر به تغییرات مکرر اندازه پنجره برنامه در پاسخ به نحوه استفاده کاربران از یک برنامه شود، به عنوان مثال، با چرخاندن، تا کردن یا باز کردن یک دستگاه یا با تغییر اندازه برنامه در حالت پنجره چند پنجرهای یا دسکتاپ. تغییرات پیکربندی مانند تغییر جهت و تغییر اندازه پنجره باعث ایجاد فعالیت (به طور پیش فرض) می شود. برای اطمینان از تجربه کاربری مطلوب، وضعیت برنامه را در طول تغییرات پیکربندی حفظ کنید تا برنامه شما داده ها (مانند ورودی فرم) را حفظ کند و کاربران بتوانند زمینه را حفظ کنند.
استفاده از کلاسهای اندازه پنجره: از اندازههای مختلف پنجره و نسبت ابعاد بدون سفارشیسازیهای خاص دستگاه پشتیبانی میکند. فرض کنید اندازه پنجره ها اغلب تغییر می کند. از کلاس های اندازه پنجره برای مشخص کردن ابعاد پنجره استفاده کنید و سپس یک طرح تطبیقی مناسب را اعمال کنید.
طرحبندیهای واکنشگرا ایجاد کنید: در کلاسهای اندازه پنجره، طرحبندیهای واکنشگرا با تغییرات در ابعاد نمایش تنظیم میشوند تا همیشه یک نمایش برنامه بهینه ایجاد کنند.
جدول زمانی
Android 16 (2025): پشتیبانی از همه جهتها و نسبتهای ابعادی و قابلیت تغییر اندازه برنامه، تجربه پایه برای دستگاههای صفحهنمایش بزرگ (کوچکترین عرض صفحه >= 600dp) برای برنامههایی است که سطح API 36 را هدف قرار میدهند. با این حال، توسعهدهندگان میتوانند انصراف دهند.
نسخه اندروید در سال 2026: پشتیبانی از همه جهتها و نسبتهای ابعادی و تغییر اندازه برنامهها تجربه پایه برای دستگاههای صفحهنمایش بزرگ (کوچکترین عرض صفحه >= 600dp) برای برنامههایی است که سطح API 37 را هدف قرار میدهند. توسعهدهندگان گزینهای برای انصراف نخواهند داشت.
سطح API را هدف قرار دهید
دستگاه های قابل اجرا
انصراف برنامهنویس مجاز است
36 (اندروید 16)
دستگاه های صفحه نمایش بزرگ (کوچکترین عرض صفحه >= 600dp)
بله
37 (پیش بینی شده)
دستگاه های صفحه نمایش بزرگ (کوچکترین عرض صفحه >= 600dp)
خیر
ضربالاجلها برای هدف قرار دادن سطوح API خاص، مخصوص فروشگاه برنامه است. Google Play از اوت 2026 از برنامهها میخواهد سطح API 36 و از آگوست 2027 سطح API 37 را هدف قرار دهند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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)"]]