طراحی Material You

از Android 12، طراحی Material You بر بیان و روان بودن در سیستم‌عامل Android تمرکز دارد، با هدف کمک به کاربران برای ایجاد و داشتن یک تجربه واحد و منسجم که به نیازهای آن‌ها پاسخ می‌دهد. به‌عنوان شریک Android، شما را تشویق می‌کنیم که طراحی Material You را در بخش‌های زیر در دستگاه‌های Android خود بگنجانید:

  • رنگ پویا
  • حرکت
  • ابزاره‌ها

رنگ پویا

رنگ پویا محور اصلی طراحی Material You و بخش کلیدی استراتژی چندساله Android برای ارائه سفارشی‌سازی ساده‌تر و عمیق‌تر به کاربرانش است، به‌گونه‌ای که هیچ دستگاه دیگری این کار را نمی‌کند. Material You این موارد را ارائه می‌دهد:

  • داستان غنی و یکپارچه‌ای از شخصی‌سازی دردسترس در هر دستگاه Android برای کاربران و توسعه‌دهندگان ارائه می‌دهد.

  • فرصت‌هایی برای «تولیدکنندگان تجهیزات اصلی» Android فراهم می‌کند تا به نوآوری در میانای کاربری سیستم و برنامه‌های طرف اول به‌شیوه‌ای که با سخت‌افزار و رنگ نمانام، ساخت، و شکل آن‌ها هماهنگ باشد ادامه دهند.

برای بهره‌گیری از رنگ پویا، از داستان استخراج رنگ «متریال شما» در Android 12 به‌عنوان بخش کلیدی پیشنهاد نرم‌افزار خود به کاربران استفاده کنید. در دستگاه، از منطق استخراج رنگ موجود در AOSP، به‌ویژه منطقی که رنگ منبع کاغذدیواری یا زمینه را می‌گیرد و آن را ازطریق ‫۶۵ API رنگ برون‌برد می‌کند، استفاده کنید. برای الزامات رنگ پویا، به استفاده از رنگ پویا مراجعه کنید.

جریان کامل رنگ پویا شامل چهار مرحله است، همان‌طور که در زیر نشان داده شده است:

جریان رنگ «مطالب شما»

شکل ۱. جریان رنگ پویای «شما و Material»

  1. کاربر کاغذدیواری یا زمینه را ازطریق انتخابگر سازنده تجهیزات اصلی تغییر می‌دهد.

  2. کاربر یکی از موارد زیر را انتخاب می‌کند:

    • زمینه دستگاه. وقتی انتخاب شود، Android به‌طور خودکار یک رنگ منبع را که الزامات را برآورده می‌کند انتخاب می‌کند.

    • کاغذدیواری + زمینه جدید. وقتی انتخاب شود، منطق AOSP به‌طور خودکار یک رنگ منبع واحد از کاغذدیواری انتخاب‌شده برمی‌گزیند.

  3. طبق منطق AOSP، «پروژه متن‌باز Android» رنگ منبع واحد را به ۵ پالت رنگی با ۱۳ گونه رنگی در هرکدام گسترش می‌دهد، که سپس ۶۵ مشخصه رنگ را تکمیل می‌کنند.

  4. میانای کاربری برنامه از ۶۵ مشخصه رنگی به روشی استفاده می‌کند که در سراسر بوم‌سازگان برنامه Android یکسان است. توصیه می‌شود از پالت رنگ یکسانی برای «میانای کاربری سیستم» دستگاه و برنامه‌های مختص سازنده اصلی تجهیزات استفاده کنید.

وصله‌های Android 12

برای دریافت منطق سرتاسری استخراج رنگ کاغذدیواری و فعال کردن دستگاه برای پر کردن APIهای ۶۵ رنگی به روشی که با بوم‌سازگان سازگار باشد، وصله‌های زیر را در پیاده‌سازی Android 12 خود بگنجانید:

مشخص کردن رنگ‌های سفارشی در «انتخابگر زمینه»

اگر از برنامه AOSP ThemePicker استفاده می‌کنید، برنامه WallpaperPicker بخش رنگ را درصورت برآورده شدن هر دو شرط زیر نشان می‌دهد:

  • ‫flag_monet در frameworks/base/packages/SystemUI/res/values/flags.xml true است.
  • یک 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 که در زیر نوشته شده است باشد:

  • system_accent1

    • رنگ‌مایه: از «۴۰» برای گونه‌های رنگی که به ۰، ۱۰، ۵۰، و ۱۰۰ ختم می‌شوند استفاده کنید، درغیراین‌صورت از «۴۸» استفاده کنید
    • رنگ‌مایه: همانند منبع
  • system_accent2

    • رنگ‌مایه: از «۱۶» استفاده کنید
    • رنگ‌مایه: همانند منبع
  • system_accent3

    • کروما: از «۳۲» استفاده کنید
    • رنگ‌مایه: چرخش ۶۰ درجه مثبت
  • system_neutral1

    • Chroma: use "4"
    • رنگ‌مایه: همانند منبع
  • system_neutral2

    • 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 شامل موجی نرم‌تر و ظریف‌تر برای لمس است تا بازخوردی درباره ضربه زدن به کاربران ارائه دهد.

موج‌دار Material You

شکل ۳. جلوه موجی Android 12، با پویانمایی پر شدن نرم‌تر

برای قابل‌پیش‌بینی بودن توسعه‌دهنده و ارائه تجربه کاربری عالی، مطمئن شوید که جلوه موج‌دار در دستگاه‌هایتان مشابه نمونه نشان‌داده‌شده در بالا باشد. درحالی‌که برای پشتیبانی از جلوه‌های موج‌دار نیازی به انجام مراحل ادغام خاصی ندارید، باید این جلوه را در دستگاه‌هایتان آزمایش کنید تا هرگونه پس‌رفت ناخواسته معرفی‌شده در پیاده‌سازی‌تان را بررسی کنید.

ابزاره‌ها

ابزارک‌ها عناصر اصلی دستگاه Android هستند. ‫Android 12 شامل میاناهای برنامه‌سازی کاربردی جدید و قابلیت‌های میانای برنامه‌سازی کاربردی است که همه تولیدکنندگان تجهیزات اصلی باید از آن‌ها پشتیبانی کنند.

منابع بیشتر

استفاده از رنگ SysUI

(accent1 = A1،‏ accent2 = A2،‏ accent3 = A3،‏ neutral1 = N1،‏ neutral2 = N2)

استفاده از رنگ Material You

شکل ۴. استفاده از رنگ پویا در «واسط کاربر سیستم»

به‌روزرسانی‌های مشخصه رنگ کتابخانه 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 پیاده‌سازی شده است و برای سازندگان اصلی محصول دردسترس است.