برنامههای تطبیقی از نمایشگرهایی در همه اندازهها پشتیبانی میکنند: کل صفحه دستگاه، پنجرههای قابل تغییر اندازه در حالت چند پنجرهای، جهتگیری عمودی و افقی، نمایشگرهای تاشده و بازشده دستگاههای تاشو.
لیست کوتاهی از تنظیمات پیکربندی و APIها شما را قادر می سازد برنامه های تطبیقی بسازید. اما برخی تنظیمات و APIهای قدیمی با برنامه های تطبیقی ناسازگار هستند و باید از آنها اجتناب شود.
قابلیت تغییر اندازه
برنامههای تطبیقی از قابلیت تغییر اندازه برنامه و حالت چند پنجرهای پشتیبانی میکنند.
ویژگی resizeableActivity
عناصر مانیفست <activity>
و <application>
حالت چند پنجرهای را در Android 11 (سطح API 30) و پایینتر فعال یا غیرفعال میکند. در Android 12 (سطح API 31) و بالاتر، صفحههای بزرگ بدون در نظر گرفتن ویژگی از حالت چند پنجرهای پشتیبانی میکنند. برای اطلاعات بیشتر، به پشتیبانی از حالت چند پنجره ای مراجعه کنید.
برای افزایش بهره وری و رضایت کاربر، برنامه خود را فعال کنید تا در سناریوهای چند پنجره ای و چندوظیفه ای شرکت کند.
اگر برنامه شما سطوح API کمتر از 24 را هدف قرار می دهد، resizeableActivity="true"
را تنظیم کنید. در غیر این صورت، آن را فراموش کنید - این به طور پیش فرض در اندروید 7.0 (سطح API 24) و بالاتر true
است.
resizeableActivity="false"
را برای هیچ سطح API تنظیم نکنید. برنامه خود را از موارد استفاده که شامل حالت چند پنجره ای است مستثنی نکنید.
جهت گیری
برنامه های تطبیقی بدون توجه به اندازه نمایشگر یا حالت پنجره، از جهت عمودی و افقی پشتیبانی می کنند.
تنظیم مانیفست screenOrientation
جهت فعالیت را محدود می کند.
تنظیمات screenOrientation
را از مانیفست برنامه خود حذف کنید.
قفل کردن جهت برنامه ها از تغییر اندازه پنجره جلوگیری نمی کند. اندازه برنامهها وقتی وارد حالت چند پنجرهای میشوند، وقتی دستگاهی تا میشود یا باز میشود، یا زمانی که اندازه یک پنجره از نوع دسکتاپ تغییر میکند، تغییر میکنند. برنامه شما باید بدون توجه به تنظیم ویژگی screenOrientation
از تغییرات در اندازه پنجره پشتیبانی کند.
جهت گیری فعالیت را محدود نکنید. برنامههایی که جهت را قفل میکنند در دستگاههای صفحه بزرگ و اندازههای پنجره ناسازگار در جعبه نامه قرار میگیرند.
برنامههای دارای جعبه نامه در Google Play برای رایانههای لوحی، تاشوها و دستگاههای ChromeOS در معرض کاهش قابلیت شناسایی هستند.
نسبت ابعاد
همانطور که اندازه صفحه و پنجره متفاوت است، نسبت ابعاد آنها نیز متفاوت است - از بلند و باریک، مربع، کوتاه و پهن.
تنظیمات مانیفست minAspectRatio
و maxAspectRatio
نسبت تصویر برنامه شما را به مقادیر کدگذاری شده محدود میکند.
برنامه خود را طوری تنظیم کنید که بدون توجه به ابعاد نسبی با نمایشگر مطابقت داشته باشد.
تنظیمات minAspectRatio
و maxAspectRatio
را از مانیفست برنامه خود حذف کنید. یا اطمینان حاصل کنید که برنامه شما قابل تغییر اندازه است و نسبت ابعاد از خودش مراقبت می کند (بخش قابلیت تغییر اندازه را ببینید).
سعی نکنید ابعاد نسبی برنامه خود را کنترل کنید. اگر برنامه شما روی صفحه یا پنجرهای اجرا میشود که دارای نسبت ابعادی است که با نسبت تصویر برنامه ناسازگار است، برنامه شما جعبه نامه است.
در اندروید 14 (سطح API 34) و بالاتر، کاربران میتوانند نسبت ابعاد برنامه را لغو کنند تا برنامههای جعبه نامه را گسترش دهند تا فضای نمایش موجود را پر کنند. به حالت سازگاری دستگاه مراجعه کنید.
اندازه پنجره
بهینهسازی طرحبندی برای اندازههای مختلف نمایشگر، فرض اصلی طراحی تطبیقی است. برنامه های تطبیقی به جای اندازه صفحه نمایش دستگاه، روی اندازه پنجره برنامه تمرکز می کنند. وقتی برنامه تمام صفحه است، پنجره برنامه صفحه دستگاه است.
کلاسهای اندازه پنجره روشی سیستماتیک برای تعیین و طبقهبندی اندازه پنجره برنامه ارائه میکنند. با تغییر کلاس اندازه پنجره برنامه، برنامه خود را با تغییر طرحبندی تطبیق دهید.
اندازه پنجره برنامه خود را بر اساس کلاس های اندازه پنجره ارزیابی کنید.
برای تعیین کلاس اندازه پنجره، از تابع سطح بالای currentWindowAdaptiveInfo()
کتابخانه Compose Material 3 Adaptive استفاده کنید. برای اطلاعات بیشتر، به ساخت برنامههای تطبیقی مراجعه کنید.
کاربرد تعاریف کلاس اندازه پنجره و APIهای داخلی را نادیده نگیرید. از API های منسوخ برای محاسبه اندازه پنجره استفاده نکنید.
API های منسوخ شده
APIهای پلتفرم قدیمیتر پنجره برنامه را به درستی اندازهگیری نمیکنند. برخی صفحه نمایش دستگاه را اندازه گیری می کنند، برخی دیگر تزئینات سیستم را حذف می کنند.
از WindowManager#getCurrentWindowMetrics()
و WindowMetrics#getBounds()
برای دریافت اندازه پنجره برنامه استفاده کنید. برای بدست آوردن چگالی نمایشگر از WindowMetrics#getDensity()
استفاده کنید.
برای تعیین اندازه پنجره از APIهای Display
منسوخ زیر استفاده نکنید:
-
getSize()
: منسوخ شده در اندروید 11 (سطح API 30) -
getMetrics()
: در Android 11 منسوخ شده (سطح API 30) -
getRealSize()
: در اندروید 12 منسوخ شده است (سطح API 31) -
getRealMetrics()
: در Android 12 منسوخ شده (سطح API 31)
نوشتن
Jetpack Compose برای توسعه رابط کاربری تطبیقی طراحی شده است. بدون XML، بدون فایل های طرح بندی، بدون واجد شرایط منبع. فقط کامپوزیشنهای بدون حالت مبتنی بر Kotlin مانند Column
، Row
و Box
که رابط کاربری شما را توصیف میکنند، و اصلاحکنندههایی مانند offset
، padding
، و size
که رفتار را به عناصر UI اضافه میکنند.
ساخت با Compose. با آخرین ویژگی ها و نسخه ها به روز باشید.
به تکنولوژی قدیمی تکیه نکنید. اجازه ندهید برنامه شما منسوخ شود.
نوشتن کتابخانه تطبیقی Material 3
کتابخانه Compose Material 3 Adaptive مؤلفه ها و API هایی را ارائه می دهد که توسعه برنامه های تطبیقی را تسهیل می کند.
از API های زیر برای تطبیق برنامه خود استفاده کنید:
-
NavigationSuiteScaffold
: بسته به کلاس اندازه پنجره برنامه، بین نوار پیمایش و ریل پیمایش جابه جا می شود. -
ListDetailPaneScaffold
: طرح بندی متعارف لیست جزئیات را پیاده سازی می کند. طرح بندی را با اندازه پنجره برنامه تطبیق می دهد. -
SupportingPaneScaffold
: طرح بندی متعارف پانل پشتیبان را پیاده سازی می کند.
چرخ را دوباره اختراع نکنید دستاوردهای بهره وری توسعه دهندگان ارائه شده توسط همه کتابخانه های Jetpack Compose را از دست ندهید.
طرح بندی ها
کاربران انتظار دارند برنامهها با محتوای تکمیلی یا کنترلهای بهبودیافته، از فضای نمایشی موجود نهایت استفاده را ببرند.
برنامههای تطبیقی طرحبندیها را بر اساس تغییرات نمایشگر، بهویژه، تغییر در اندازه پنجره برنامه یا تغییر وضعیت دستگاه بهینه میکنند.
با تغییر اندازه پنجره، اجزای رابط کاربری را تغییر دهید تا از فضای نمایش موجود استفاده کنید. به عنوان مثال، نوار پیمایش پایینی را که در اندازههای کوچک پنجره استفاده میشود، با یک ریل پیمایش عمودی در پنجرههای متوسط و بزرگ تعویض کنید. دیالوگ ها را تغییر دهید تا در همه نمایشگرها قابل دسترسی باشد.
برای فعال کردن طرحبندیهای چند صفحهای مانند جزئیات فهرست و پشتیبان برای نمایش محتوای پویا، محتوا را سازماندهی کنید.
اگر از پنجرههای محتوا استفاده نمیکنید، فقط عناصر UI را برای پر کردن فضای نمایش موجود گسترش ندهید. خواندن خطوط طولانی متن دشوار است. دکمه های کشیده به نظر طراحی ضعیفی دارند. اگر از Modifier.fillMaxWidth
استفاده می کنید، تصور نکنید که این رفتار برای همه اندازه های نمایشگر درست است.
دستگاه های ورودی
کاربران فقط از صفحه نمایش لمسی برای تعامل با برنامه ها استفاده نمی کنند.
برنامههای تطبیقی از صفحهکلیدهای خارجی، ماوسها و قلمها پشتیبانی میکنند تا تجربه کاربری پیشرفتهتری را ارائه دهند و به کاربران کمک کنند تا در انواع فاکتورهای شکلی کارآمدتر باشند.
از عملکرد داخلی چارچوب Android برای پیمایش برگههای صفحهکلید و کلیک، انتخاب و پیمایش ماوس یا صفحهکلید استفاده کنید. میانبرهای صفحه کلید برنامه خود را در راهنمای میانبرهای صفحه کلید منتشر کنید.
از کتابخانه Jetpack Material 3 استفاده کنید تا کاربران بتوانند با استفاده از قلم در هر جزء TextField
بنویسند.
روش های ورودی جایگزین را غیرممکن نکنید. مسائل دسترسی را معرفی نکنید.
خلاصه
- برنامه خود را با Compose و کتابخانه Material 3 Adaptive بسازید
- طرحبندی پایه در کلاسهای اندازه پنجره
- طرح بندی های چند صفحه ای ایجاد کنید
- برنامه خود را قابل تغییر اندازه کنید
- هرگز جهت فعالیت را قفل نکنید
- نسبت تصویر را محدود نکنید
- پشتیبانی از ورودی غیر از لمس
- از API های منسوخ شده خودداری کنید
✓ آنچه را که کاربران انتظار دارند انجام دهید : برنامه خود را برای تنوع دستگاههایی که مردم هر روز به آنها تکیه میکنند بهینه کنید.
✗ منتظر نباش همین امروز شروع کنید!