با توجه به اینکه برنامههای اندروید اکنون روی دستگاههای متنوعی (مانند تلفن، تبلت، دستگاههای تاشو، کامپیوترهای رومیزی، ماشین و تلویزیون) اجرا میشوند و حالتهای پنجرهای روی صفحه نمایشهای بزرگ (مانند تقسیم صفحه و پنجرهای کردن دسکتاپ)، توسعهدهندگان باید برنامههای اندرویدی بسازند که صرف نظر از جهتگیری دستگاه، با هر صفحه و اندازه پنجرهای سازگار شوند. الگوهایی مانند محدود کردن جهتگیری و قابلیت تغییر اندازه در دنیای چنددستگاهی امروز بسیار محدودکننده هستند.
محدودیتهای جهتگیری، تغییر اندازه و نسبت ابعاد را نادیده بگیرید
برای برنامههایی که اندروید ۱۷ یا بالاتر را هدف قرار میدهند، محدودیتهای جهتگیری، تغییر اندازه و نسبت ابعاد دیگر در نمایشگرهایی که کوچکترین عرض آنها بیشتر از ۶۰۰dp است، اعمال نمیشود. برنامهها کل پنجره نمایشگر را صرف نظر از نسبت ابعاد یا جهتگیری ترجیحی کاربر پر میکنند و از ستونبندی استفاده نمیشود.
اندروید ۱۷، گزینهی انصراف موقت توسعهدهندگان برای محدودیتهای جهتگیری و تغییر اندازه در دستگاههای با صفحه نمایش بزرگ را که در اندروید ۱۶ ارائه شده بود، حذف کرد.
این تغییر، یک رفتار استاندارد جدید برای پلتفرم معرفی میکند. اندروید به سمت مدلی حرکت میکند که در آن انتظار میرود برنامهها با جهتگیریها، اندازههای نمایشگر و نسبتهای ابعاد مختلف سازگار شوند. محدودیتهایی مانند جهتگیری ثابت یا قابلیت تغییر اندازه محدود، مانع از سازگاری برنامه میشود. برنامه خود را سازگار کنید تا بهترین تجربه کاربری ممکن را ارائه دهید.
همچنین میتوانید این رفتار را با استفاده از چارچوب سازگاری برنامه و فعال کردن پرچم UNIVERSAL_RESIZABLE_BY_DEFAULT compat آزمایش کنید.
تغییرات رایج در شکستن قفل
نادیده گرفتن محدودیتهای جهتگیری، تغییر اندازه و نسبت ابعاد ممکن است بر رابط کاربری برنامه شما در برخی دستگاهها، به ویژه عناصری که برای طرحبندیهای کوچک قفلشده در جهت عمودی طراحی شدهاند، تأثیر بگذارد. به عنوان مثال، برنامهها ممکن است مشکلاتی مانند طرحبندیهای کشیده و انیمیشنها و اجزای خارج از صفحه داشته باشند. هرگونه فرضی که در مورد نسبت ابعاد یا جهتگیری داشته باشید، میتواند باعث مشکلات بصری در برنامه شما شود. درباره نحوه جلوگیری از این مشکلات و بهبود رفتار تطبیقی برنامه خود بیشتر بیاموزید .
یک مشکل رایج در نمایشگرهای تاشو افقی یا برای محاسبات نسبت ابعاد در سناریوهایی مانند چند پنجرهای، پنجرهای کردن دسکتاپ یا نمایشگرهای متصل، زمانی است که پیشنمایش دوربین کشیده، چرخانده یا برش داده میشود. این مشکل اغلب در دستگاههای با صفحه نمایش بزرگ و تاشو اتفاق میافتد زیرا برنامهها روابط ثابتی را بین ویژگیهای دوربین (مانند نسبت ابعاد و جهت حسگر) و ویژگیهای دستگاه (مانند جهت دستگاه و جهت طبیعی) فرض میکنند. درباره مدیریت پیشنمایش دوربین بیشتر بدانید .
فعال کردن چرخش دستگاه منجر به ایجاد مجدد فعالیتها میشود که در صورت عدم حفظ صحیح، میتواند منجر به از دست رفتن وضعیت کاربر شود. نحوه ذخیره صحیح وضعیت رابط کاربری را در بخش «ذخیره وضعیتهای رابط کاربری» بیاموزید.
جزئیات پیادهسازی
ویژگیهای مانیفست و APIهای زمان اجرا زیر در دستگاههای با صفحه نمایش بزرگ، در حالتهای تمام صفحه و چند پنجرهای نادیده گرفته میشوند:
-
screenOrientation -
resizableActivity -
minAspectRatio -
maxAspectRatio -
setRequestedOrientation() -
getRequestedOrientation()
مقادیر زیر برای screenOrientation, setRequestedOrientation() و getRequestedOrientation() نادیده گرفته میشوند:
-
portrait -
reversePortrait -
sensorPortrait -
userPortrait -
landscape -
reverseLandscape -
sensorLandscape -
userLandscape
در مورد قابلیت تغییر اندازه صفحه نمایش، android:resizeableActivity="false", android:minAspectRatio و android:maxAspectRatio هیچ تاثیری ندارند.
استثنائات
محدودیتهای جهتگیری، تغییر اندازه و نسبت تصویر اندروید ۱۷ در شرایط زیر اعمال نمیشوند:
- بازیها (بر اساس پرچم
android:appCategory) - کاربرانی که صریحاً در تنظیمات نسبت تصویر دستگاه، رفتار پیشفرض برنامه را انتخاب میکنند
- صفحه نمایشهایی که کوچکترین عرض آنها کوچکتر از
sw600dpاست