جهت گیری برنامه، نسبت ابعاد و قابلیت تغییر اندازه، جهت گیری برنامه، نسبت ابعاد و قابلیت تغییر اندازه

برنامه‌های اندروید روی انواع دستگاه‌ها اجرا می‌شوند: تلفن، تبلت، تاشو، کروم بوک، ماشین، تلویزیون و حتی XR. برای انطباق با این محیط متنوع، برنامه شما باید از همه فاکتورهای شکل دستگاه و اندازه نمایش پشتیبانی کند.

Android 16 (سطح API 36) با نادیده گرفتن محدودیت‌های برنامه برای جهت‌گیری صفحه، نسبت ابعاد و قابلیت تغییر اندازه، برنامه‌ها را قادر می‌سازد تا با فاکتورهای فرم و اندازه‌های نمایش متفاوت سازگار شوند. موارد لغو برای دستگاه هایی با کمترین عرض >= 600dp اعمال می شود که موارد زیر را تعریف می کند:

  • قرص
  • نمایشگرهای داخلی صفحه نمایش بزرگ تاشو
  • پنجره دسکتاپ (بر روی همه عوامل شکل)

برنامه‌هایی که سطح API 36 را هدف قرار می‌دهند، قابل تغییر اندازه هستند و می‌توانند به حالت چند پنجره‌ای (معادل resizeableActivity="true" ) وارد شوند، اگر کمترین عرض نمایشگر >= 600dp باشد.

برنامه قبل از Android 16 روی یک دستگاه صفحه بزرگ باز شده جعبه نامه است، اما وقتی Android 16 را هدف قرار می دهد کاملاً نمایش داده می شود. برنامه موارد اخبار بیشتری را در حالت تمام صفحه به جای جعبه نامه نمایش می دهد.
شکل 1. فید اخبار توسعه‌دهنده که قبلاً روی دستگاه‌های صفحه‌نمایش بزرگ بسته شده بود (سمت چپ) هنگام هدف قرار دادن Android 16 (راست) تمام صفحه اجرا می‌شود.

Android 16 یک مدل ثابت از طراحی برنامه تطبیقی ​​را اعمال می‌کند که با رعایت اولویت‌های کاربر برای جهت‌گیری دستگاه، نسبت ابعاد و اندازه نمایش، تجربه کاربر را بهینه می‌کند.

تغییرات

ویژگی‌های مانیفست و APIهای زیر برای برنامه‌هایی که Android 16 (سطح API 36) را در صفحه‌های بزرگ هدف قرار می‌دهند نادیده گرفته می‌شوند:

ویژگی یا API ارزش ها را نادیده گرفت
screenOrientation portrait , landscape , reversePortrait , reverseLandscape , sensorPortrait پرتره , sensorLandscape , userPortrait , userLandscape
resizeableActivity همه
minAspectRatio همه
maxAspectRatio همه
setRequestedOrientation()

getRequestedOrientation()
portrait , landscape , reversePortrait , reverseLandscape , sensorPortrait پرتره , sensorLandscape , userPortrait , userLandscape

استثنائات

استثناهای تغییرات اندروید 16 شامل موارد زیر است:

  • نمایشگرهای کوچکتر از sw600dp (اکثر گوشی‌ها، صفحه‌های تاشو و نمایشگرهای بیرونی صفحه‌نمایش بزرگ تاشو)

  • بازی‌ها بر اساس پرچم android:appCategory

    بازی خود را با استفاده از Android App Bundles و Play App Signing منتشر کنید، به Google Play اجازه می‌دهد پرچم را مدیریت کند و مزایای بسته‌های برنامه را به صورت خودکار ارائه دهد. همچنین نمای کلی مانیفست برنامه را ببینید.

  • کاربر رفتار پیش‌فرض برنامه را در تنظیمات نسبت ابعاد انتخاب می‌کند

انصراف دهید

برای انصراف از رفتار سطح 36 API، ویژگی مانیفست 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 از چارچوب سازگاری برنامه در دستگاه های آزمایشی خود استفاده کنید (به ابزارهای چارچوب سازگاری مراجعه کنید).

می‌توانید تست را با چارچوب تست اسپرسو و APIهای تست Jetpack Compose به صورت خودکار انجام دهید.

مشکلات رایج

برنامه‌هایی که جهت‌گیری دستگاه، نسبت ابعاد یا تغییر اندازه برنامه را محدود می‌کنند ممکن است در 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 را هدف قرار دهند.

منابع اضافی