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

شکل ۱. آیکونهای تطبیقی از ماسکهای متنوعی پشتیبانی میکنند که از دستگاهی به دستگاه دیگر متفاوت است. جلوههای بصری: یک آیکون تطبیقی از جلوههای بصری جذاب متنوعی پشتیبانی میکند که هنگام قرار دادن یا حرکت دادن آیکون در صفحه اصلی توسط کاربران نمایش داده میشوند.

شکل ۲. نمونههایی از جلوههای بصری نمایش داده شده توسط یک آیکون تطبیقی. تمبندی کاربر: از اندروید ۱۳ (سطح API ۳۳)، کاربران میتوانند آیکونهای تطبیقی خود را تمبندی کنند. اگر کاربر آیکونهای برنامه با تم را در تنظیمات سیستم خود فعال کند و لانچر از این ویژگی پشتیبانی کند، سیستم از رنگآمیزی تصویر زمینه و تم انتخابی کاربر برای تعیین رنگ سایه آیکونهای برنامه برای برنامههایی که دارای لایه
monochromeدر آیکون تطبیقی خود هستند، استفاده میکند. از اندروید ۱۶ QPR 2، اندروید به طور خودکار آیکونهای برنامه را برای برنامههایی که لایه تک رنگ خود را ارائه نمیدهند، تمگذاری میکند.
شکل ۳. آیکونهای تطبیقی که از تصویر زمینه و تمهای کاربر ارثبری میکنند. در سناریوهای زیر، صفحه اصلی آیکون برنامه با تم خاص را نمایش نمیدهد و در عوض آیکون برنامه تطبیقی یا استاندارد را نمایش میدهد:
- اگر کاربر آیکونهای برنامه با تم را فعال نکند.
- اگر برنامه شما آیکون تک رنگ ندارد و دستگاه کاربر روی نسخه قدیمیتر اندروید نسبت به اندروید ۱۶ (QPR 2) اجرا میشود.
- اگر لانچر از آیکونهای برنامه با تم پشتیبانی نمیکند.
طراحی آیکونهای تطبیقی
برای اطمینان از اینکه آیکون تطبیقی شما از اشکال، جلوههای بصری و تمهای مختلف کاربر پشتیبانی میکند، طراحی باید الزامات زیر را برآورده کند:
شما باید دو لایه برای نسخه رنگی آیکون ارائه دهید: یکی برای پیشزمینه و یکی برای پسزمینه. لایهها میتوانند برداری یا بیتمپ باشند، هرچند برداریها ترجیح داده میشوند.

شکل ۴. آیکونهای تطبیقی تعریفشده با استفاده از لایههای پیشزمینه و پسزمینه. منطقه امن ۶۶x۶۶ نشان دادهشده، ناحیهای است که هرگز توسط یک ماسک شکلیافته تعریفشده توسط یک تولیدکننده اصلی (OEM) برش داده نمیشود. 
شکل ۵. نمونهای از چگونگی نمایش لایههای پیشزمینه و پسزمینه با استفاده از ماسک دایرهای. اگر میخواهید از تمبندی آیکونهای برنامه توسط کاربر پشتیبانی کنید، برای نسخه تکرنگ آیکون، یک لایه واحد در نظر بگیرید.

شکل ۶. یک لایه آیکون تک رنگ (چپ) به همراه نمونههایی از پیشنمایشهای رنگی (راست). اندازه همه لایهها را به 108x108 dp تغییر دهید.
از آیکونهایی با لبههای تمیز استفاده کنید. لایهها نباید ماسک یا سایه پسزمینه در اطراف طرح کلی آیکون داشته باشند.
از لوگویی استفاده کنید که حداقل ۴۸x۴۸ dp باشد. نباید از ۶۶x۶۶ dp بیشتر شود، زیرا ۶۶x۶۶ dp داخلی آیکون در نمای ماسک شده ظاهر میشود.
۱۸ dp بیرونی در هر یک از چهار طرف لایهها برای ماسک کردن و ایجاد جلوههای بصری مانند اختلاف منظر یا پالسینگ در نظر گرفته شده است.
برای یادگیری نحوه ایجاد آیکونهای تطبیقی با استفاده از اندروید استودیو، به الگوی آیکون برنامه اندروید فیگما یا مستندات اندروید استودیو برای ایجاد آیکونهای لانچر مراجعه کنید. همچنین، پست وبلاگ طراحی آیکونهای تطبیقی را بخوانید.
آیکون تطبیقی خود را به برنامه خود اضافه کنید
آیکونهای تطبیقی، درست مانند آیکونهای غیر تطبیقی، با استفاده از ویژگی android:icon در فایل مانیفست برنامه مشخص میشوند.
یک ویژگی اختیاری، android:roundIcon ، توسط لانچرهایی استفاده میشود که برنامههایی با آیکونهای دایرهای را نمایش میدهند و اگر آیکون برنامه شما شامل یک پسزمینه دایرهای به عنوان بخش اصلی طراحی آن باشد، میتواند مفید باشد. چنین لانچرهایی ملزم به تولید آیکونهای برنامه با اعمال یک ماسک دایرهای به android:roundIcon هستند و این تضمین ممکن است شما را قادر سازد تا ظاهر آیکون برنامه خود را با، به عنوان مثال، کمی بزرگتر کردن لوگو و اطمینان از اینکه هنگام برش، پسزمینه دایرهای کاملاً حاشیهدار باشد، بهینه کنید.
قطعه کد زیر هر دوی این ویژگیها را نشان میدهد، اما اکثر برنامهها فقط android:icon را مشخص میکنند:
<application ... android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" ...> </application>
در مرحله بعد، آیکون تطبیقی خود را در res/mipmap-anydpi-v26/ic_launcher.xml ذخیره کنید. از عنصر <adaptive-icon> برای تعریف منابع لایه پیشزمینه، پسزمینه و تکرنگ برای آیکونهای خود استفاده کنید. عناصر داخلی <foreground> ، <background> و <monochrome> از تصاویر برداری و بیتمپ پشتیبانی میکنند.
مثال زیر نحوه تعریف عناصر <foreground> ، <background> و <monochrome> را درون <adaptive-icon> نشان میدهد:
<?xml version="1.0" encoding="utf-8"?> ... <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> <monochrome android:drawable="@drawable/ic_launcher_foreground" /> </adaptive-icon> ...
لایههای پیشزمینه و تکرنگ از یک drawable یکسان استفاده میکنند. با این حال، در صورت نیاز میتوانید برای هر لایه drawableهای جداگانه ایجاد کنید.
همچنین میتوانید با inline کردن drawableها در عناصر <foreground> ، <background> و <monochrome> ، آنها را به عنوان عنصر تعریف کنید. قطعه کد زیر مثالی از انجام این کار با drawable پیشزمینه را نشان میدهد.
<?xml version="1.0" encoding="utf-8"?> ... <foreground> <inset android:insetBottom="18dp" android:insetLeft="18dp" android:insetRight="18dp" android:insetTop="18dp"> <shape android:shape="oval"> <solid android:color="#0000FF" /> </shape> </inset> </foreground> ...
اگر میخواهید همان ماسک و جلوه بصری را که برای آیکونهای تطبیقی معمولی استفاده میشود، روی میانبرهای خود اعمال کنید، از یکی از تکنیکهای زیر استفاده کنید:
- برای میانبرهای ثابت، از عنصر
<adaptive-icon>استفاده کنید. - برای میانبرهای پویا، هنگام ایجاد آنها، متد
createWithAdaptiveBitmap()را فراخوانی کنید.
برای اطلاعات بیشتر در مورد پیادهسازی آیکونهای تطبیقی، به پیادهسازی آیکونهای تطبیقی مراجعه کنید. برای اطلاعات بیشتر در مورد میانبرها، به نمای کلی میانبرهای برنامه مراجعه کنید.
منابع اضافی
برای اطلاعات بیشتر در مورد طراحی و پیادهسازی آیکونهای تطبیقی، به منابع زیر مراجعه کنید.
- قالب صفحه انجمن فیگما
- درک آیکونهای تطبیقی اندروید
- طراحی آیکونهای تطبیقی
- پیادهسازی آیکونهای تطبیقی
- ایجاد آیکونهای برنامه در اندروید استودیو
- مشخصات طراحی آیکون گوگل پلی