از Android 12، طراحی Material You بر بیان و روان بودن در سیستمعامل Android تمرکز دارد، با هدف کمک به کاربران برای ایجاد و داشتن یک تجربه واحد و منسجم که به نیازهای آنها پاسخ میدهد. بهعنوان شریک Android، شما را تشویق میکنیم که طراحی Material You را در بخشهای زیر در دستگاههای Android خود بگنجانید:
- رنگ پویا
- حرکت
- ابزارهها
رنگ پویا
رنگ پویا محور اصلی طراحی Material You و بخش کلیدی استراتژی چندساله Android برای ارائه سفارشیسازی سادهتر و عمیقتر به کاربرانش است، بهگونهای که هیچ دستگاه دیگری این کار را نمیکند. Material You این موارد را ارائه میدهد:
داستان غنی و یکپارچهای از شخصیسازی دردسترس در هر دستگاه Android برای کاربران و توسعهدهندگان ارائه میدهد.
فرصتهایی برای «تولیدکنندگان تجهیزات اصلی» Android فراهم میکند تا به نوآوری در میانای کاربری سیستم و برنامههای طرف اول بهشیوهای که با سختافزار و رنگ نمانام، ساخت، و شکل آنها هماهنگ باشد ادامه دهند.
برای بهرهگیری از رنگ پویا، از داستان استخراج رنگ «متریال شما» در Android 12 بهعنوان بخش کلیدی پیشنهاد نرمافزار خود به کاربران استفاده کنید. در دستگاه، از منطق استخراج رنگ موجود در AOSP، بهویژه منطقی که رنگ منبع کاغذدیواری یا زمینه را میگیرد و آن را ازطریق ۶۵ API رنگ برونبرد میکند، استفاده کنید. برای الزامات رنگ پویا، به استفاده از رنگ پویا مراجعه کنید.
جریان کامل رنگ پویا شامل چهار مرحله است، همانطور که در زیر نشان داده شده است:
شکل ۱. جریان رنگ پویای «شما و Material»
کاربر کاغذدیواری یا زمینه را ازطریق انتخابگر سازنده تجهیزات اصلی تغییر میدهد.
کاربر یکی از موارد زیر را انتخاب میکند:
زمینه دستگاه. وقتی انتخاب شود، Android بهطور خودکار یک رنگ منبع را که الزامات را برآورده میکند انتخاب میکند.
کاغذدیواری + زمینه جدید. وقتی انتخاب شود، منطق AOSP بهطور خودکار یک رنگ منبع واحد از کاغذدیواری انتخابشده برمیگزیند.
طبق منطق AOSP، «پروژه متنباز Android» رنگ منبع واحد را به ۵ پالت رنگی با ۱۳ گونه رنگی در هرکدام گسترش میدهد، که سپس ۶۵ مشخصه رنگ را تکمیل میکنند.
میانای کاربری برنامه از ۶۵ مشخصه رنگی به روشی استفاده میکند که در سراسر بومسازگان برنامه Android یکسان است. توصیه میشود از پالت رنگ یکسانی برای «میانای کاربری سیستم» دستگاه و برنامههای مختص سازنده اصلی تجهیزات استفاده کنید.
وصلههای Android 12
برای دریافت منطق سرتاسری استخراج رنگ کاغذدیواری و فعال کردن دستگاه برای پر کردن APIهای ۶۵ رنگی به روشی که با بومسازگان سازگار باشد، وصلههای زیر را در پیادهسازی Android 12 خود بگنجانید:
اجباری
بهشدت توصیه میشود
- رفع وضعیت مسابقه هنگام تنظیم ویژگیهای سیستم رنگ راهاندازی.
- اجازه دادن به همپوشانیها برای مطلع شدن از تغییرات زمینه
- رفع مشکل وضعیت مسابقه هنگام تنظیم ویژگیهای سیستم رنگ راهاندازی (دور دوم)
- انتقال FeatureFlags به بسته پرچمها.
- پیادهسازی صحیح پشتیبانی زمینهبندی چندکاربری
- رفع مشکل ناپدید شدن گزینه رنگ کاغذدیواری مشخصشده پساز بازراهاندازی
- رفع خطای محاسبه فام سوم
- به برنامههای پسزمینهای اجازه داده نشود زمینه را تغییر دهند
مشخص کردن رنگهای سفارشی در «انتخابگر زمینه»
اگر از برنامه AOSP ThemePicker استفاده میکنید، برنامه WallpaperPicker بخش رنگ را درصورت برآورده شدن هر دو شرط زیر نشان میدهد:
-
flag_monetدرframeworks/base/packages/SystemUI/res/values/flags.xmltrueاست. - یک APK کدبند سیستم با نام بسته در
themes_stub_packageدر فایلpackages/apps/ThemePicker/res/values/override.xmlتعریف شده است.
قالب APK کوچک
نسخه نمونه این APK را میتوانید در packages/apps/ThemePicker/themes پیدا کنید.
این APK باید فقط حاوی منابع باشد و رنگهای پایه دردسترس و نام آنها را بهتفصیل شرح دهد.
کدبند باید حاوی فایل XML در res/xml با قالب زیر باشد:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="color_bundles">
<item>color1</item>
<item>color2</item>
<item>color3</item>
<item>color4</item>
</array>
<string name="bundle_name_color1">Blue</string>
<string name="bundle_name_color2">Red</string>
<string name="bundle_name_color3">Yellow</string>
<string name="bundle_name_color4">Green</string>
</resources>
در این فایل، هر item در color_bundles نام متمایزی دارد،
بهشرطی که رشتههای زیر bundle_name_item نامگذاری شده باشند.
باید یک رشته bundle_name_item برای هر رنگ وجود داشته باشد،
با نام توصیفی برای هر رنگ. با افزودن رشتههای ترجمهشده مربوطه به
res/values-language code دایرکتوری، میتوان این موارد را ترجمه کرد.
مقادیر رنگ واقعی میتواند در همان XML یا در فایل XML منابع جداگانه با قالب زیر باشد:
<resources>
<color name="color_primary_color1">#0000FF</color>
<color name="color_secondary_color1">#0000FF</color>
<color name="color_primary_color2">#ff0000</color>
<color name="color_secondary_color2">#ff0000</color>
<color name="color_primary_color3">#ffff00</color>
<color name="color_secondary_color3">#ffff00</color>
<color name="color_primary_color4">#00ff00</color>
<color name="color_secondary_color4">#00ff00</color>
</resources>
برای هر مورد در آرایه بستههای رنگ، باید یک ورودی color_primary_item و یک ورودی color_secondary_item وجود داشته باشد (و هر دو رنگ باید یکسان باشند). مقادیر این color
ورودیها کدهای رنگ واقعی برای هر رنگ است که در بخش رنگهای اصلی
نمایش داده میشود.
مرحله ۱: ساختن تجربه زمینهبندی کاربر
انتخابگر زمینه جایی است که کاربران با قابلیتهای شخصیسازی جدید «متریال یو» تعامل برقرار میکنند و احتمالاً بین گزینههای رنگ یا پیشتنظیمها انتخاب میکنند. ازآنجاییکه این ویژگی با محصول و جمعیتشناسی کاربر شما مطابقت دارد، میتوانید بااستفاده از انتخابگر زمینه یا انتخابگر کاغذدیواری، تجربه شخصیسازی و رنگ غنیتری به کاربران ارائه دهید.
- هنگام استفاده از انتخابگر کاغذدیواری، استخراج رنگ کاغذدیواری بهطور پیشفرض روشن است. بااینحال، میتوانید برای ارائه گزینههای بیشتر به کاربر، سفارشیسازیهایی در انتخابگر انجام دهید.
مرحله ۲: استخراج رنگ کاغذدیواری به رنگ منبع
برای فعال کردن استخراج رنگ کاغذدیواری، وصلههای Android 12 فهرستشده در بالا را انتخاب کنید (این عملکرد بهطور پیشفرض در نسخه آتی AOSP فعال خواهد شد).
منطق AOSP که استخراج کاغذدیواری را راهاندازی میکند در
frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java،
در ThemeOverlayController#mOnColorsChangedListener، ازطریق
WallpaperManager#onWallpaperColorsChanged شروع میشود. توصیه میکنیم از منطق اصلاحنشده
AOSP استفاده کنید تا تجربه توسعه یکسانی داشته باشید.
بهطور پیشفرض، منطق رنگی را انتخاب میکند که بیشترین بسامد را دارد و برای استفاده مناسب است.
برای بهرهگیری از رنگهای منبع دیگری که الگوریتم برمیگرداند و
نمایش آن رنگها به کاربران در انتخابگر مضمون، از
ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) استفاده کنید.
برای اینکه رنگ منبع (چه از کاغذدیواری استخراج شده باشد چه از پیشتنظیم انتخابی کاربر) برای استفاده مناسب باشد، باید حداقل مقدار
CAM16
رنگمایه آن ۵ باشد؛ این کار تضمین میکند که وقتی رنگ منبع از یک رنگ واحد به ۶۵ رنگ تونال تبدیل میشود، تحتتأثیر رنگهای تیره جزئی قرار نگیرد و همچنان نشانگر انتخاب کاربر باشد. برای خواندن و اصلاح رنگها در CAM16،
از Cam#fromInt یا Cam#getInt استفاده کنید.
استفاده از پالت رنگ غیرپویا برای دستگاههایی که از استخراج رنگ کاغذدیواری پشتیبانی نمیکنند، همچنان میتوانید با انجام کارهای زیر مطمئن شوید که برنامههای Google و برنامههای طرف سومی که از رنگ پویا پشتیبانی میکنند ظاهر خوبی دارند:
- با غیرفعال کردن
flag_monetدرframeworks/base/packages/SystemUI/res/values/flags.xml، از پالت پیشفرض Material استفاده کنید.- مطمئن شوید کاربران همچنان میتوانند سیستمعامل خود را بااستفاده از انتخابگر زمینه ازپیشتعیینشده شخصیسازی کنند.
مرحله ۳: گسترش دادن رنگ منبع به میاناهای برنامهسازی کاربردی رنگ
بااستفاده از رنگ منبع واحد مشتقشده از مرحله قبلی، Android ۵ پالت رنگی منحصربهفرد (رنگهای تأکیدی ۱ تا ۳، رنگهای خنثی ۱ تا ۲) تولید میکند، هر پالت شامل ۱۳ رنگ است، و هر رنگ شامل مقادیر درخشندگی مختلف (۰ تا ۱۰۰۰) است، درمجموع ۶۵ رنگ. منطق ارائهشده در وصلههای Android 12 این گسترش رنگ را بهدرستی پیادهسازی میکند؛ جزئیات ارائهشده در زیر نحوه پیادهسازی را شرح میدهد.
برای یکپارچگی توسعهدهنده، ۵ پالت رنگی (accent1، accent2، accent3، neutral1، neutral2) و ۱۳ رنگ مربوط به آنها باید براساس رنگ منبع واحد با تغییرات مربوطه در مقادیر رنگ و فام CAM16 که در زیر نوشته شده است باشد:
-
- رنگمایه: از «۱۶» استفاده کنید
- رنگمایه: همانند منبع
-
- کروما: از «۳۲» استفاده کنید
- رنگمایه: چرخش ۶۰ درجه مثبت
-
- Chroma: use "4"
- رنگمایه: همانند منبع
-
- Chroma (صفحه رنگی): از «۸» استفاده کنید
- رنگمایه: همانند منبع
CTS شامل آزمایشهایی برای اعتبارسنجی فراخوانیهای میانای برنامهسازی کاربردی درخشندگی و فام است. برای اجرا کردن، از
atest SystemPalette استفاده کنید.
مرحله ۴: استفاده از رنگهای پویا در برنامهها و میانای کاربر سیستم
پساز تنظیم رنگهای پویا در دستگاه، برنامهها از دستورالعملهای «متریال» برای استفاده از رنگها پیروی میکنند. دستورالعملهای Material قرار است تا ۲۶ اکتبر ۲۰۲۱ در material.io منتشر شود تا برنامههای طرف سوم بتوانند از آن استفاده کنند. برای میانای کاربر سامانه و برنامههای شخص اول، اکیداً توصیه میکنیم رنگهای پویا را در سراسر تجربه کاربری بهگونهای ادغام کنید که با سختافزار و نمانام شما مطابقت داشته باشد و به شما کمک کند دستگاههایتان را متمایز کنید.
برای راهنمایی کلی درباره رنگ پویا، به موارد زیر مراجعه کنید:
از رنگهای تأکیدی برای عناصر پیشزمینه در برنامهها و «میانای کاربر سیستم» استفاده کنید:
@android:color/system_accent1_0 … 1000 // most-used foreground color group @android:color/system_accent2_0 … 1000 // alternate accent, used for surfaces @android:color/system_accent3_0 … 1000 // playful, analogous colorبرای عناصر پسزمینه در برنامهها و «میانای کاربر سیستم»، از رنگهای خنثی استفاده کنید:
@android:color/system_neutral1_0 … 1000 // most-used background color group @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
برای اطلاعات بیشتر درباره نحوه نگاشت رنگها توسط Material You و نحوه استفاده از میاناهای برنامهسازی کاربردی در SysUI، به منابع بیشتر مراجعه کنید.
مرحله ۵: افزودن گزینههای رنگ پویا در پیادهسازی AOSP WallpaperPicker
ساختن برای Android 13 و بالاتر
از Android 13، android.theme.customization.accent_color
منسوخ شده است. مشخصه جدیدی بهنام android.theme.customization.theme_style برای پشتیبانی از گونههای رنگی مختلف اضافه شده است. درحالحاضر
چهار نوع در پایگاه کد بهشرح زیر داریم:
TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.
این موارد به Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES ارسال میشوند، همانطور که در JSON زیر نشان داده شده است:
{
"android.theme.customization.system_palette":"B1611C",
"android.theme.customization.theme_style":"EXPRESSIVE"
}
ساختن برای Android 12 و نسخههای پایینتر
هنگام استفاده از انتخابگر زمینه سفارشی، دستگاه باید رنگ منبع معتبری را به
Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES با
ارائه فایل JSON در قالب زیر ارسال کند (که در آن 746BC1 نمونهای از
رنگ منبع معتبر است):
{
"android.theme.customization.system_palette":"746BC1",
"android.theme.customization.accent_color":"746BC1"
}
با انجام این کار، استخراج رنگ کاغذدیواری (مرحله ۲) رد میشود و رنگ منبع ارائهشده مستقیماً به ۶۵ مشخصه رنگ گسترش مییابد (مرحله ۳).
مرحله ۶: ثبت درخواست پشتیبانی
علاوهبر ادغام سیستم، باید تیکتی ارسال کنید و نام نمانام خود (Build.MANUFACTURER) را به ما اطلاع دهید. ازآنجاییکه اکثر برنامههای شخص ثالث از مؤلفههای Material برای Android برای نمایش رنگهای پویا استفاده میکنند، ما از یک فهرست مجاز کدگذاریشده استفاده میکنیم تا مشخص کنیم کدام دستگاهها ویژگی پالتهای رنگی پویا را ادغام کردهاند.
حرکت
حرکت روان باعث میشود دستگاهها مدرن و ممتاز بهنظر برسند. برای ایجاد و حفظ اعتماد و رضایت توسعهدهندگان، پیمایش بیشازحد و موجدار شدن دو بخش کلیدی از حرکت روان هستند که باید ظاهر و احساسی یکپارچه داشته باشند.
استفاده از پیمایش بیشازحد در سیستمعامل
Android 12 شامل حرکت پیمایش اضافی پویا و واکنشگرایانهتری بهشکل کشش نما است که وقتی کاربر سعی میکند از لبه فهرست پیمایش کند نشان داده میشود. مثالی در زیر نشان داده شده است:
شکل ۲. جلوه پیمایش بیشازحد Android 12، همانطور که در «تنظیمات» نشان داده شده است
برای سازگاری توسعهدهنده، مطمئن شوید که جلوه کلی پیمایش بیشازحد در دستگاههایتان مشابه موارد زیر باشد:
در دستگاههایی که مقدار true را برای
ActivityManager.isHighEndGfx()برمیگردانند، جلوه پیمایش بیشازحد بهصورت کشیدگی غیرخطی صفحه است (همانطور که در بالا نشان داده شده است).در دستگاههای با عملکرد پایینتر، اثر کشش به یک کشش خطی ساده میشود (برای کاهش بار روی سیستم).
استفاده از پیمایش بیشازحد در برنامههای طرف اول
هنگام استفاده از نماهای سفارشی، ممکن است لازم باشد برخیاز برنامهها و واسط کاربر سیستم را که از جلوه کشش استفاده میکنند اصلاح کنید.
برای پشتیبانی از پیمایش بیشازحد کششی، به جدیدترین کتابخانهها ارتقا دهید:
androidx.recyclerview:recyclerview:1.3.0-alpha01برایRecyclerView-
androidx.core:core:1.7.0-alpha01برایNestedScrollViewوEdgeEffectCompat androidx.viewpager:viewpager:1.1-alpha01برایViewPager
برای طرحبندیهای سفارشی که از
EdgeEffectاستفاده میکنند، تغییرات تجربه کاربری زیر را درنظر بگیرید:با پیمایش بیشازحد کششی، کاربران نباید با محتوای چیدمان درحالیکه درحال کشیده شدن است تعامل داشته باشند. کاربران باید فقط خود کشش را دستکاری کنند و مثلاً نتوانند دکمهای را در محتوا فشار دهند.
وقتی کاربران درحالیکه پویانمایی
EdgeEffectدرحال اجرا است محتوا را لمس میکنند، باید پویانمایی را بگیرند و به آنها اجازه داده شود که کشش را دستکاری کنند. مقدار کشش فعلی ازEdgeEffectCompat.getDistance()دردسترس است.برای دستکاری مقدار کشیدن و برگرداندن مقدار مصرفشده، از
onPullDistance()استفاده کنید. این کار به توسعهدهندگان امکان میدهد وقتی انگشت محتوا را از موقعیت شروع فراتر میبرد، بهآرامی از کشیدن به پیمایش تغییر دهند.هنگام کار با پیمایش تودرتو، اگر محتوا کشیده شود، کشیدگی باید حرکت لمس را قبلاز محتوای تودرتو مصرف کند، درغیراینصورت وقتی انگشت تغییر جهت میدهد، بهجای رها کردن کشیدگی، ممکن است تودرتو پیمایش کند.
برای جزئیات مربوط به پیمایش بیشازحد، به پویانمایی ژست پیمایش مراجعه کنید.
استفاده از موج (بازخورد لمسی) در سیستمعامل
Android 12 شامل موجی نرمتر و ظریفتر برای لمس است تا بازخوردی درباره ضربه زدن به کاربران ارائه دهد.
شکل ۳. جلوه موجی Android 12، با پویانمایی پر شدن نرمتر
برای قابلپیشبینی بودن توسعهدهنده و ارائه تجربه کاربری عالی، مطمئن شوید که جلوه موجدار در دستگاههایتان مشابه نمونه نشاندادهشده در بالا باشد. درحالیکه برای پشتیبانی از جلوههای موجدار نیازی به انجام مراحل ادغام خاصی ندارید، باید این جلوه را در دستگاههایتان آزمایش کنید تا هرگونه پسرفت ناخواسته معرفیشده در پیادهسازیتان را بررسی کنید.
ابزارهها
ابزارکها عناصر اصلی دستگاه Android هستند. Android 12 شامل میاناهای برنامهسازی کاربردی جدید و قابلیتهای میانای برنامهسازی کاربردی است که همه تولیدکنندگان تجهیزات اصلی باید از آنها پشتیبانی کنند.
در سیستمعامل خود، از میاناهای برنامهسازی کاربردی توسعهدهنده مربوط به چیدمان ابزارک، اندازهگیری، و پارامترهای نرمافزار (برای مثال، اندازه گوشه گرد) پشتیبانی کنید. پیادهسازی شما باید از ابزارهها در ارائه پارامترها ازطریق میاناهای برنامهسازی کاربردی بهدرستی پشتیبانی کند و تضمین کند که ابزارهها توسط کاربر قابل تغییر اندازه و پیکربندی هستند.
در برنامههایتان، از قابلیتهای جدید «میانای برنامهسازی کاربردی» برای بهروزرسانی یا ساختن ابزارکهای طرف اول جدید درصورت امکان استفاده کنید. برای همه ابزارکهای برنامه طرف اول در حوزه اختیاراتتان، فهرست وارسی توسعهدهنده زیر را اجرا کنید.
- اولویت براساس توصیههای پلاتفرم است.
- برای جزئیات مربوط به توصیه، پیوند موجود در ستون «تغییر» را دنبال کنید.
مساحت تغییر اولویت پیادهسازی بهبود تجربه صفحه اصلی افزودن پیشنمایشهای مقیاسپذیر P1 افزودن شرح ابزاره P1 شخصیسازی ابزارهها آسانتر میشود P2 (اختیاری) فعال کردن انتقالهای روانتر اولویت بالا از ترامپولینهای پخش اجتناب کنید اولویت بالا پذیرفتن دستورالعملهای ابزاره بهبود اندازهها و چیدمانهای ابزاره P2 اعمال رنگهای پویا اولویت بالا پیادهسازی گوشههای گرد اولویت بالا افزودن دکمههای ترکیبی جدید P2 ساده کردن کد ابزاره موجود سادهسازی مجموعههای RemoteView P2 سادهسازی زمان اجرای RemoteView P2
منابع بیشتر
استفاده از رنگ SysUI
(accent1 = A1، accent2 = A2، accent3 = A3، neutral1 = N1، neutral2 = N2)
شکل ۴. استفاده از رنگ پویا در «واسط کاربر سیستم»
بهروزرسانیهای مشخصه رنگ کتابخانه Material
Material در نسخه آینده با ایجاد نقشهای رنگی که برای تأمین رنگ نماهای خاص استفاده میشوند، مشخصههای زمینهاش را بهروز خواهد کرد.
| نقش رنگ | مشخصه زمینه Android | زمینه روشن رنگ پویا |
زمینه تیره رنگ پویا |
|---|---|---|---|
| اصلی | colorPrimary | system_accent1_600 | system_accent1_200 |
| در اصلی | رنگ در اصلی | system_accent1_0 | system_accent1_800 |
| فرعی | colorSecondary | system_accent2_600 | system_accent2_200 |
| در فرعی | colorOnSecondary | system_accent2_0 | system_accent2_800 |
| خطا | colorError | N/A (red_600) | N/A (red_200) |
| درصورت بروز خطا | colorOnError | موجود نیست (سفید) | موجود نیست (red_900) |
| پسزمینه | android:colorBackground | system_neutral1_10 | system_neutral1_900 |
| در پسزمینه | رنگ در پسزمینه | system_neutral1_900 | system_neutral1_100 |
| سطح | colorSurface | system_neutral1_10 | system_neutral1_900 |
| روی سطح | رنگ در سطح | system_neutral1_900 | system_neutral1_100 |
«ماده» مشخصههای وضعیت خود را با اشارهگرهای زیر بهروزرسانی خواهد کرد:
| نقش رنگ | مشخصه زمینه Android | زمینه روشن رنگ پویا |
زمینه تیره رنگ پویا |
|---|---|---|---|
| محتوای اصلی ایالت | colorPrimaryStateContent | system_accent1_700 | system_accent1_200 |
| لایه حالت اصلی | لایه وضعیت رنگ اصلی | system_accent1_600 | system_accent1_300 |
| محتوای وضعیت ثانویه | colorSecondaryStateContent | system_accent2_700 | system_accent2_200 |
| لایه وضعیت ثانویه | colorSecondaryStateLayer | system_accent2_600 | system_accent2_300 |
| درباره محتوای ایالت اصلی | colorOnPrimaryStateContent | system_accent1_0 | system_accent1_800 |
| در لایه وضعیت اصلی | colorOnPrimaryStateLayer | system_accent1_900 | system_accent1_800 |
| در محتوای ایالت ثانویه | colorOnSecondaryStateContent | system_accent2_0 | system_accent2_800 |
| روی لایه وضعیت ثانویه | colorOnSecondaryStateLayer | system_accent2_900 | system_accent2_800 |
| On Primary Container State Content | colorOnPrimaryContainerStateContent | system_accent1_900 | system_accent1_900 |
| On Primary Container State Layer | colorOnPrimaryContainerStateLayer | system_accent1_900 | system_accent1_900 |
| در محتوای وضعیت ظرف ثانویه | colorOnSecondaryContainerStateContent | system_accent2_900 | system_accent2_900 |
| در لایه وضعیت محتوی ثانویه | colorOnSecondaryContainerStateLayer | system_accent2_900 | system_accent2_900 |
| در محتوای وضعیت ظرف سوم | colorOnTertiaryContainerStateContent | system_accent3_900 | system_accent3_900 |
| در لایه وضعیت ظرف سوم | colorOnTertiaryContainerStateLayer | system_accent3_900 | system_accent3_900 |
| درباره محتوای وضعیت Surface | colorOnSurfaceStateContent | system_neutral1_900 | system_neutral1_100 |
| On Surface State Layer | colorOnSurfaceStateLayer | system_neutral1_900 | system_neutral1_100 |
| On Surface Variant State Content | colorOnSurfaceVariantStateContent | system_neutral2_700 | system_neutral2_200 |
| در لایه وضعیت گونه سطوح | colorOnSurfaceVariantStateLayer | system_neutral2_700 | system_neutral2_200 |
| محتوای حالت خطا | colorErrorStateContent | قرمز۸۰۰ | قرمز۲۰۰ |
پرسشگان
استخراج رنگ
وقتی کاربر کاغذدیواری را تغییر میدهد، استخراج رنگ بهطور خودکار انجام میشود یا باید از جایی راهاندازی شود؟
با وصلههای Android 12، استخراج رنگ کاغذدیواری بهطور پیشفرض روشن است.
ThemeOverlayController.java منطق را با
ThemeOverlayController#mOnColorsChangedListener و
WallpaperManager#onWallpaperColorsChanged راهاندازی میکند.
برای کاغذدیواریهای پویا یا کاغذدیواریهای ویدیویی، میتوانیم بدانیم استخراج رنگ چه زمانی رنگ را از صفحه میگیرد؟ برخیاز کاربران ممکن است رنگهای قاب آخر را بخواهند زیرا بیشترین زمان را نشان میدهد.
استخراج رنگ زمانی راهاندازی میشود که کاربر کاغذدیواری را تنظیم میکند یا پساز چرخه قدرت صفحهنمایش (در پاسخ به WallpaperEngine#notifyColorsChanged). آخرین رویداد WallpaperColors (از کاغذدیواری زنده) پساز اینکه کاربر صفحهنمایش را خاموش و دوباره روشن میکند اعمال میشود.
انتخابگر زمینه/کاغذدیواری
چگونه انتخابگر مضمون را فعال کنم تا چندین رنگ منبع را برای کاربران نمایش دهد تا بتوانند بهجای رنگ با بالاترین بسامد، رنگ دیگری را انتخاب کنند؟ آیا راهی برای دریافت آن رنگها از منطق استخراج وجود دارد؟
بله. در انتخابگر زمینه، میتوانید از
ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) استفاده کنید.
ویژگیای در Pixel وجود دارد که نماد زمینهای نامیده میشود. آیا در سه وصلهای که همرسانی کردهاید گنجانده شده است؟ تولیدکنندگان تجهیزات اصلی چگونه میتوانند آن را پیادهسازی کنند؟
نه. نمادهای موضوعی در نسخه بتا هستند و در Android 12 دردسترس نیستند.
آیا راهی برای استفاده از برنامه «کاغذدیواری Google» با ویژگیهای استخراج و انتخاب رنگ فعال وجود دارد؟
بله. ویژگیها را میتوان با دنبال کردن مراحل یکپارچهسازی که قبلاً در این صفحه توضیح داده شد، در جدیدترین نسخه برنامه «پسزمینه Google» پیادهسازی کرد.
برای جزئیات بیشتر با مدیر فنی حساب خود تماس بگیرید.
آیا Google میتواند برنامه یا کد منبع را همرسانی کند تا «تولیدکنندگان تجهیزات اصلی» بتوانند نسخه خودشان از پیشنمایش رنگ پویا را در منو تنظیماتشان پیادهسازی کنند، که شبیه بخش پیشنمایش نشاندادهشده در برنامه «انتخابگر تصویر زمینه» Google است؟
کلاسهای اصلی که پیشنمایش را ارائه میدهند
WallpaperPicker2
و
Launcher3 هستند.
صفحه پیشنمای کاغذدیواری
WallpaperSectionController است.
چگونه پیشنمایش را پساز تغییر رنگ، همانطور که در برنامه «کاغذدیواری Google» نشان داده شده است، پیادهسازی کنیم؟
برنامه «انتخابگر کاغذدیواری» انتظار دارد ContentProvider از
«راهانداز» دردسترس باشد (راهانداز مبتنی بر Launcher3 آن را دارد). پیشنمایش توسط
GridCustomizationsProvider
در «راهانداز» ارائه میشود، که باید در
فراداده
«فعالیت» اصلی «راهانداز» برای برنامه سبک و کاغذدیواری ارجاع داده شود تا آن را بخواند. همه این موارد در
Launcher3 در AOSP پیادهسازی شده است و برای سازندگان اصلی محصول دردسترس است.