امروزه بیشاز ۳۰۰ میلیون دستگاه Android با صفحهنمایش بزرگ، ازجمله رایانه لوحی، دستگاه تاشو، Googlebook، دستگاه ChromeOS، نمایشگر خودرو، و تلویزیون، درحال استفاده است و تعداد آنها بهطور مداوم درحال افزایش است. برای ارائه تجربه کاربری بهینه در تعداد و تنوع روبهرشد دستگاههای دارای صفحهنمایش بزرگ و همچنین در تلفنهای استاندارد، برنامههای تطبیقی بسازید.
برنامههای تطبیقی چیست؟
برنامههای تطبیقی چیدمانها را براساس تغییرات در نمایش برنامه، عمدتاً اندازه پنجره برنامه، تغییر میدهند. اما برنامههای تطبیقی همچنین تغییرات در وضعیت دستگاههای تاشو، مانند وضعیت رومیزی یا کتاب، و تغییرات در تراکم صفحه و اندازه قلم را نیز دربرمیگیرند.
برنامههای تطبیقی بهجای اینکه فقط عناصر میانای کاربر را در پاسخ به اندازههای مختلف پنجره بکشند یا کوچک کنند، مؤلفههای چیدمان را جایگزین میکنند و محتوا را نشان میدهند یا پنهان میکنند. برای مثال، در تلفنهای استاندارد، برنامه تطبیقی ممکن است نوار پیمایش پایین را نمایش دهد، اما در صفحهنمایشهای بزرگ، ریل پیمایش را نشان دهد. در صفحهنمایشهای بزرگ، برنامههای تطبیقی محتوای بیشتری را نمایش میدهند، مانند چیدمان دوصفحهای فهرست-جزئیات؛ در صفحهنمایشهای کوچک، محتوای کمتری نمایش داده میشود، یعنی یا فهرست یا جزئیات.
در گذشته، برنامهها معمولاً بهصورت تمامصفحه اجرا میشدند. امروزه، برنامهها در حالت چندپنجرهای در پنجرههایی با اندازه دلخواه و مستقل از اندازه صفحهنمایش دستگاه اجرا میشوند. کاربران میتوانند اندازه پنجره را هروقت خواستند تغییر دهند. بنابراین حتی در یک نوع دستگاه، برنامهها باید تطبیقپذیر باشند.
برنامههای تطبیقی در هر دستگاهی با هر پیکربندیای عالی بهنظر میرسند و بهخوبی کار میکنند.
چرا باید واسطهای کاربر تطبیقی ساخت؟
کاربران انتظار دارند برنامه شما در همه دستگاههایشان بیعیبونقص کار کند و قابلیتهای بهبودیافتهای در صفحهنمایشهای بزرگ ارائه دهد. کاربران در حالت چندپنجرهای چندوظیفگی انجام میدهند تا تجربه برنامه بهبود یابد و بهرهوری افزایش پیدا کند.
برنامههایی که در تلفنهای استاندارد به تکوظیفهای محدود شدهاند، پایگاه کاربر درحال گسترش با امکانات متنوع را ازدست میدهند.
Google Play
Google Play مجموعهها و توصیههای برنامه مختص رایانه لوحی و دستگاه تاشو ارائه میدهد که به کاربران امکان میدهد برنامههای باکیفیت را پیدا کنند.
Play برنامهها و بازیهای بهینهسازیشده برای صفحهنمایشهای بزرگ را بالاتر از برنامههای بهینهسازینشده رتبهبندی میکند. Play رتبهبندی را براساس دستورالعملهای کیفیت برنامه برای صفحهنمایش بزرگ انجام میدهد. رتبه بالاتر با فعال کردن کاربران چنددستگاهی برای دیدن ردهبندیها و مرورهای مختص صفحهنمایش بزرگ در تلفنهایشان، قابلیت دیدهشدن را افزایش میدهد.
برنامههایی که استانداردهای کیفیت صفحهنمایش بزرگ «فروشگاه Play» را برآورده نمیکنند، هشداری در صفحه جزئیات برنامه نمایش میدهند. این هشدار به کاربران اطلاع میدهد که ممکن است برنامه در دستگاههای دارای صفحهنمایش بزرگ آنها عملکرد خوبی نداشته باشد.
برنامههای تطبیقی بسازید تا قابلیت یافتن را در Google Play گسترش دهید و تعداد دستگاههایی را که میتوانند برنامهتان را بارگیری کنند به حداکثر برسانید.
نحوه شروع کردن به کار
در تمام مراحل توسعه برنامه، از برنامهریزی تا استقرار، به طراحی تطبیقی فکر کنید. طراحان گرافیک را از طراحی تطبیقی مطلع کنید. برنامهتان را بهگونهای طراحی کنید که تطبیقپذیر باشد تا برنامهای بسازید که قابلمدیریت، قابلتوسعه، و آماده برای ضریبهای شکل و حالتهای پنجرهای آینده باشد.
برای ایجاد برنامه تطبیقی که از همه اندازهها و پیکربندیهای نمایشگر پشتیبانی میکند، کارهای زیر را انجام دهید:
- استفاده از کلاسهای اندازه پنجره برای تصمیمگیری درباره چیدمان
- ساختن با کتابخانه Compose Material 3 Adaptive
- پشتیبانی از ورودیهای غیرلمسی
- آزمایش در همه انواع دستگاهها
مهارتهای Android
مشاهده در GitHubتطبیقی کردن برنامه
adaptive مهارت Android برای بهروزرسانی میانای کاربری برنامهتان استفاده کنید تا با دستگاهها و نمایشگرهای مختلف Android سازگار شود.android skills add adaptiveکلاسهای اندازه پنجره
ابعاد پنجره برنامه میتواند در دستگاههای مختلف متفاوت باشد—یا در همان دستگاه درصورت تاشو بودن—حتی زمانی که برنامه در حالت تمامصفحه باشد. جهتهای مختلف دستگاه نسبتهای ابعادی متفاوتی ایجاد میکنند. در حالت چندپنجرهای، اندازه پنجره برنامه، نسبت ابعادی، و جهت میتواند با صفحهنمایش دستگاه متفاوت باشد.
برنامههای تطبیقی مشکل تعیین و مدیریت اندازه پنجره، نسبت ابعادی، و جهت را با درنظر گرفتن فقط پنجره برنامه هنگام رندر کردن چیدمانها ساده و تعمیم میدهند، که این کار زمانی که پنجره برنامه تمامصفحه است نیز کار میکند.
کلاسهای اندازه پنجره پنجرههای برنامه را براساس عرض یا ارتفاع پنجره به فشرده، متوسط، یا گسترده دستهبندی میکنند.
WindowSizeClass برنامهتان را بااستفاده از تابع سطح بالای currentWindowAdaptiveInfo() از کتابخانه تطبیقی Compose Material 3 محاسبه کنید. این تابع نمونهای از
WindowAdaptiveInfo را برمیگرداند که حاوی windowSizeClass است. هرزمان کلاس اندازه پنجره تغییر کند،
برنامه شما بهروزرسانی دریافت میکند:
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
قابهای محتوا
گاهیاوقات به چیدمان فعالیت صفحه گفته میشود. برای مثال، برنامه شما ممکن است صفحه اصلی، صفحه فهرست، و صفحه جزئیات مورد داشته باشد. این اصطلاح به این معنی است که هر فعالیت صفحهنمایش دستگاه را پر میکند.
بااینحال، در صفحهنمایش دستگاههایی که بهاندازه کافی بزرگ هستند تا از کلاس اندازه پنجره با عرض گسترده پشتیبانی کنند، چندین صفحه فعالیت میتوانند بهطور همزمان روی صفحه باشند. قاب اصطلاح دقیقتری برای نمایش محتوای فعالیتهای جداگانه است.
کلاسهای اندازه پنجره به شما امکان میدهد تعیین کنید چند قاب محتوا در چیدمانهای چندقابی نشان داده شود، همانطور که در طراحی مواد مشخص شده است.
قابها قابلپیمایش هستند. در کلاسهای اندازه پنجره فشرده و متوسط، برنامهها یک قاب را نمایش میدهند؛ بنابراین، پیمایش به هر مقصدی یک قاب را نمایش میدهد.
در کلاس اندازه پنجره گسترده، برنامهها میتوانند محتوای مرتبط را در چند قاب نمایش دهند، مثل چیدمان فهرست-جزئیات. پیمایش به هریک از قابها، چیدمان دو قاب را نمایش میدهد. اگر اندازه پنجره به فشرده یا متوسط تغییر کند، برنامههای تطبیقی فقط یک قاب، مقصد پیمایش، فهرست، یا جزئیات را نشان میدهند.
|
|
|
Compose Material 3 Adaptive
Jetpack Compose رویکردی مدرن و توصیفی برای ساختن برنامههای تطبیقی است که بار تکرار و نگهداری چندین فایل چیدمان را ندارد.
کتابخانه Compose Material 3 Adaptive حاوی composableهایی است که کلاسهای اندازه پنجره، مؤلفههای پیمایش، چیدمانهای چندبخشی، و وضعیتهای تاشو و مکان لولا را مدیریت میکنند، برای مثال:
NavigationSuiteScaffold: بسته به کلاس اندازه پنجره برنامه و وضعیت دستگاه، بهطور خودکار بین نوار پیمایش و ریل پیمایش جابهجا میشود.ListDetailPaneScaffold: چیدمان متعارف فهرست-جزئیات را پیادهسازی میکند.چیدمان را با اندازه پنجره برنامه تطبیق میدهد. فهرست و جزئیات مورد فهرست را در قابهای کنارهم در کلاس اندازه پنجره گسترده ارائه میدهد، اما فقط فهرست یا جزئیات را در کلاسهای اندازه پنجره فشرده و متوسط ارائه میدهد.
SupportingPaneScaffold: چیدمان متعارف قاب پشتیبان را پیادهسازی میکند.قاب محتوای اصلی و قاب پشتیبانی را در کلاس اندازه پنجره گسترده ارائه میدهد، اما فقط قاب محتوای اصلی را در کلاسهای اندازه پنجره فشرده و متوسط ارائه میدهد.
کتابخانه Compose Material 3 Adaptive وابستگی کلیدی برای توسعه برنامههای تطبیقی است.
پیکربندی و تداوم
برنامههای تطبیقی تداوم را درطول تغییرات پیکربندی حفظ میکنند.
تغییر پیکربندی زمانی رخ میدهد که اندازه پنجره برنامه تغییر کند، وضعیت دستگاه تاشو تغییر کند، یا تراکم صفحهنمایش یا قلم تغییر کند.
بهطور پیشفرض، تغییرات پیکربندی فعالیت برنامه را دوباره ایجاد میکند و همه حالتهای فعالیت
ازبین میرود. برای حفظ تداوم، برنامههای تطبیقی وضعیت را در روش onSaveInstanceState() فعالیت یا در ViewModel ذخیره میکنند.
وضعیت بدن
برنامههای تطبیقی به تغییرات در وضعیت دستگاههای تاشو پاسخ میدهند. وضعیتها شامل وضعیت میز و کتاب است.
میانای WindowInfoTracker در Jetpack WindowManager به شما امکان میدهد
فهرستی از اشیای DisplayFeature را برای دستگاه دریافت کنید. ازجمله ویژگیهای نمایشگر
FoldingFeature.State است که نشان میدهد دستگاه
کاملاً یا نیمهباز است.
کتابخانه Compose Material 3 Adaptive تابع سطح بالای
currentWindowAdaptiveInfo() را ارائه میدهد که نمونهای از
WindowAdaptiveInfo حاوی windowPosture را برمیگرداند.
ورودی فراتر از لمس
کاربران اغلب صفحهکلید، پد لمسی، موشواره، و قلمهای نوری خارجی را به دستگاههای دارای صفحهنمایش بزرگ متصل میکنند. این دستگاههای جانبی بهرهوری کاربر، دقت ورودی، بیان شخصی، و دسترسپذیری را بهبود میبخشند. بیشتر دستگاههای ChromeOS با صفحهکلید و پد لمسی داخلی ارائه میشوند.
برنامههای تطبیقی از دستگاههای ورودی خارجی پشتیبانی میکنند، اما چارچوب Android بخش زیادی از کار را برای شما انجام میدهد:
Jetpack Compose نسخه ۱.۷ و بالاتر: پیمایش با کلید جهش صفحهکلید و کلیک، انتخاب، و پیمایش با موشواره یا پد لمسی بهطور پیشفرض پشتیبانی میشود.
کتابخانه Jetpack
androidx.compose.material3: به کاربران امکان میدهد بااستفاده از قلم در هر مؤلفهTextFieldبنویسند.دستیار میانبرهای صفحهکلید: میانبرهای صفحهکلید برنامه و پلاتفرم Android را برای کاربران قابلشناسایی میکند. میانبرهای صفحهکلید برنامهتان را با لغو کردن فراخوان برگشت پنجره
onProvideKeyboardShortcuts()در «راهنمای میانبرهای صفحهکلید» منتشر کنید.
برای پشتیبانی کامل از ضریبهای شکل در همه اندازهها، برنامههای تطبیقی از ورودیهای همه انواع پشتیبانی میکنند.
نحوه آزمایش برنامههای تطبیقی
اندازههای مختلف صفحه و پنجره و پیکربندیهای مختلف دستگاه را آزمایش کنید. از نماگرفتهای سمت میزبان و پیشنمایشهای Compose برای بررسی چیدمانهای برنامهتان استفاده کنید. برنامهتان را در شبیهسازهای Android Studio و دستگاههای Android ازراهدور میزبانیشده در مراکز داده Google اجرا کنید.
رهنمودهای کیفیت برنامه برای صفحهنمایش بزرگ
دستورالعملهای کیفیت برنامه برای صفحهنمایش بزرگ به شما کمک میکند تأیید کنید که برنامه تطبیقیتان در رایانههای لوحی، دستگاههای تاشو، و دستگاههای ChromeOS بهخوبی کار میکند. این دستورالعملها شامل آزمایشهایی است که به شما امکان میدهد عملکرد برنامه را برای مسیرهای قطعی کاربر تأیید کنید. اگرچه این دستورالعملها بر صفحهنمایشهای بزرگ تمرکز دارند، اما با همه اندازههای صفحهنمایش سازگار هستند.
پیکربندیهای متعدد
میانای DeviceConfigurationOverride در Compose نسخه ۱.۷ و بالاتر
به شما امکان میدهد جنبههای مختلف پیکربندی دستگاه را لغو کنید. این API
پیکربندیهای مختلف دستگاه را بهصورت بومیسازیشده برای هر
محتوای قابلترکیبی که میخواهید آزمایش کنید شبیهسازی میکند. برای مثال، میتوانید چندین اندازه دلخواه واسط کاربر را در یک اجرای مجموعه آزمون در یک دستگاه یا شبیهساز آزمایش کنید.
با تابع افزونه DeviceConfigurationOverride.then()، میتوانید
چندین پارامتر پیکربندی، مانند اندازه قلم، زبان، زمینه، و
اندازه چیدمان را بهطور همزمان آزمایش کنید.
نماگرفتهای سمت میزبان
آزمایشهای نماگرفت سمت میزبان روشی سریع و مقیاسپذیر برای تأیید ظاهر بصری چیدمانهای برنامه شما هستند. از نماگرفتهای سمت میزبان برای آزمایش واسط کاربرتان برای اندازههای مختلف نمایشگر استفاده کنید.
برای اطلاعات بیشتر، به آزمایش نماگرفت پیشنمایش Compose مراجعه کنید.
پیشنماهای Compose
پیشنمایشهای Compose به شما امکان میدهد میانای کاربری برنامهتان را در نمای طراحی Android Studio بررسی کنید. پیشنمایشها از حاشیهنویسیهایی مانند @PreviewScreenSizes،
@PreviewFontScale، و @PreviewLightDark استفاده میکنند تا به شما اجازه دهند محتوای قابلترکیب را در پیکربندیهای مختلف ببینید. حتی میتوانید با پیشنماها تعامل داشته باشید.
«استودیو Android» همچنین مشکلات رایج کاربردپذیری را در پیشنمایشها برجسته میکند، مثلاً دکمهها یا فیلدهای نوشتاری که بیشازحد عریض هستند.
برای اطلاعات بیشتر، به پیشدیدن واسط کاربر با پیشدیدهای قابلساخت مراجعه کنید.
شبیهسازها
Android Studio شبیهسازهای مختلفی برای آزمایش اندازههای مختلف چیدمان ارائه میدهد:
- شبیهساز با قابلیت تغییر اندازه: تلفن، رایانه لوحی، یا دستگاه تاشو را شبیهسازی میکند و به شما امکان میدهد بهسرعت بین آنها جابهجا شوید
- شبیهساز Pixel Fold: تلفن تاشو Pixel Fold با صفحهنمایش بزرگ را شبیهسازی میکند
- شبیهساز Pixel Tablet: دستگاه Pixel Tablet با صفحهنمایش بزرگ را شبیهسازی میکند
- شبیهساز رایانه: به شما امکان میدهد پنجرهبندی قالب آزاد، نگه داشتن موشواره، و میانبرهای صفحهکلید را آزمایش کنید
جاریسازی دستگاه از راه دور
بهطور ایمن به دستگاههای Android راه دور که در مراکز داده Google میزبانی میشوند متصل شوید و برنامهتان را در جدیدترین دستگاههای Pixel و Samsung اجرا کنید. برنامهها را نصب و اشکالزدایی کنید، فرمانهای ADB را اجرا کنید، و دستگاهها را بچرخانید و تا کنید تا مطمئن شوید برنامهتان در انواع دستگاههای واقعی بهخوبی کار میکند.
جاریسازی دستگاه از راه دور در Android Studio ادغام شده است. برای اطلاعات بیشتر، به جاریسازی دستگاه Android، با پشتیبانی Firebase مراجعه کنید.
منابع بیشتر
- ارائه I/O: ساختن برنامههای Android تطبیقی