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

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

اندروید ۱۶ (سطح API ۳۶) با لغو محدودیت‌های برنامه برای جهت‌گیری صفحه نمایش، نسبت ابعاد و قابلیت تغییر اندازه، به برنامه‌ها این امکان را می‌دهد که با فرم‌فکتورها و اندازه‌های مختلف نمایشگر سازگار شوند. این لغوها برای دستگاه‌هایی با کمترین عرض >= ۶۰۰dp اعمال می‌شوند که موارد زیر را تعریف می‌کند:

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

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

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

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

تغییرات

ویژگی‌های مانیفست و APIهای زیر برای برنامه‌هایی که اندروید ۱۶ (سطح API ۳۶) را روی صفحه نمایش‌های بزرگ هدف قرار می‌دهند، نادیده گرفته می‌شوند:

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

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

استثنائات

استثنائات تغییرات اندروید ۱۶ شامل موارد زیر است:

  • نمایشگرهای کوچکتر از 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>

آزمایش‌ها

برای آزمایش اینکه آیا برنامه شما تحت تأثیر تغییرات اندروید ۱۶ قرار گرفته است یا خیر، از شبیه‌سازهای سری Pixel Tablet و Pixel Fold در اندروید استودیو استفاده کنید و targetSdkPreview = "Baklava" در فایل build.gradle ماژول برنامه خود تنظیم کنید.

یا با فعال کردن پرچم UNIVERSAL_RESIZABLE_BY_DEFAULT از چارچوب سازگاری برنامه در دستگاه‌های آزمایشی خود استفاده کنید (به ابزارهای چارچوب سازگاری مراجعه کنید).

شما می‌توانید تست را با چارچوب تست Espresso و APIهای تست Jetpack Compose خودکار کنید.

مشکلات رایج

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

برای ارائه یک تجربه کاربری بهینه در تلفن‌ها، تبلت‌های تاشو، دستگاه‌های ChromeOS، نمایشگرهای خودرو و واقعیت افزوده (XR)، برنامه خود را به گونه‌ای بسازید که واکنش‌گرا و تطبیق‌پذیر باشد:

  • از اجزای رابط کاربری کشیده شده اجتناب کنید: طرح‌بندی‌هایی که برای صفحه نمایش‌های استاندارد و عمودی گوشی طراحی شده‌اند، احتمالاً در تطبیق با نسبت‌های ابعاد دیگر شکست خواهند خورد. به عنوان مثال، عناصر رابط کاربری که کل عرض صفحه نمایش را پر می‌کنند، در جهت افقی کشیده به نظر می‌رسند. برای جلوگیری از کشیدگی، حداکثر عرض را به اجزا اضافه کنید.

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

  • سازگاری دوربین در حالت عمودی و افقی را تأیید کنید: پیش‌نمایش‌های منظره‌یاب دوربین که نسبت ابعاد و جهت‌گیری خاصی را نسبت به حسگر دوربین در نظر می‌گیرند، می‌توانند منجر به پیش‌نمایش‌های کشیده یا وارونه در نمایشگرهای نامنطبق شوند. تأیید کنید که منظره‌یاب‌ها با تغییرات جهت‌گیری به درستی می‌چرخند. منظره‌یاب‌ها را قادر سازید تا با نسبت‌های ابعاد رابط کاربری که با نسبت ابعاد حسگر متفاوت هستند، تنظیم شوند.

  • حفظ وضعیت در حین تغییر اندازه پنجره: حذف محدودیت‌های جهت‌گیری و نسبت ابعاد می‌تواند منجر به تغییرات مکرر اندازه پنجره برنامه در پاسخ به نحوه ترجیح کاربران برای استفاده از یک برنامه شود، به عنوان مثال، با چرخاندن، تا کردن یا باز کردن دستگاه یا با تغییر اندازه برنامه در حالت چند پنجره‌ای یا پنجره‌ای دسکتاپ. تغییرات پیکربندی مانند تغییر جهت‌گیری و تغییر اندازه پنجره باعث بازآفرینی فعالیت (به طور پیش‌فرض) می‌شود. برای کمک به ارائه یک تجربه کاربری بهینه، وضعیت برنامه را در حین تغییرات پیکربندی حفظ کنید تا برنامه شما داده‌ها (مانند ورودی فرم) را حفظ کند و کاربران بتوانند زمینه را حفظ کنند.

  • استفاده از کلاس‌های اندازه پنجره: از اندازه‌ها و نسبت‌های ابعاد مختلف پنجره بدون سفارشی‌سازی‌های خاص دستگاه پشتیبانی کنید. فرض کنید اندازه پنجره‌ها مرتباً تغییر می‌کنند. از کلاس‌های اندازه پنجره برای مشخص کردن ابعاد پنجره استفاده کنید و سپس یک طرح‌بندی تطبیقی ​​مناسب اعمال کنید.

  • ساخت طرح‌بندی‌های واکنش‌گرا: در کلاس‌های اندازه پنجره، طرح‌بندی‌های واکنش‌گرا با تغییرات در ابعاد نمایشگر تنظیم می‌شوند تا همیشه یک نمایش بهینه از برنامه ایجاد کنند.

گاهشمار

  • اندروید ۱۶ (۲۰۲۵): پشتیبانی از همه جهت‌ها و نسبت‌های ابعاد و قابلیت تغییر اندازه برنامه، تجربه پایه برای دستگاه‌های صفحه نمایش بزرگ (کوچکترین عرض صفحه نمایش >= ۶۰۰dp) برای برنامه‌هایی است که سطح API ۳۶ را هدف قرار می‌دهند. با این حال، توسعه‌دهندگان می‌توانند از این قابلیت انصراف دهند.
سطح API هدف دستگاه‌های قابل اجرا انصراف توسعه‌دهنده مجاز است
۳۶ (اندروید ۱۶) دستگاه‌های صفحه نمایش بزرگ (کوچکترین عرض صفحه نمایش >= 600dp) بله

مهلت‌های تعیین‌شده برای سطوح API خاص، مختص فروشگاه‌های اپلیکیشن هستند. گوگل پلی از آگوست ۲۰۲۶، اپلیکیشن‌ها را ملزم به تعیین سطح API ۳۶ خواهد کرد.

منابع اضافی