تصميم Material You

بدءًا من Android 12، يركز تصميم Material You على التعبير عن الذات والسلاسة في نظام التشغيل Android، بهدف مساعدة المستخدمين في إنشاء واستخدام تجربة متكاملة واحدة تلبي احتياجاتهم. بصفتك شريكًا في Android، ننصحك بدمج تصميم Material You في أجهزة Android في الجوانب التالية:

  • ألوان ديناميكية
  • حركة
  • التطبيقات المصغَّرة

ألوان ديناميكية

يشكّل اللون الديناميكي العنصر الرئيسي في تصميم Material You، وهو جزء أساسي من استراتيجية Android المتعدّدة السنوات التي تهدف إلى توفير ميزات تخصيص أبسط وأدق لمستخدمي Android بطريقة لا تتوفّر في أي أجهزة أخرى. يوفّر نظام Material You ما يلي:

  • يوفّر للمستخدمين والمطوّرين تجربة تخصيص متسقة وغنية في أي جهاز Android.

  • إتاحة فرص لشركات المصنّعين الأصليّين للأجهزة التي تعمل بنظام التشغيل Android لمواصلة ابتكار واجهة المستخدم للنظام والتطبيقات التابعة للجهة المصنّعة بطريقة تتوافق مع الأجهزة والعلامة التجارية من حيث اللون والشكل والشركة

للاستفادة من ميزة "الألوان الديناميكية"، استخدِم قصة استخراج الألوان في Material You في Android 12 كجزء أساسي من عرضك البرمجي للمستخدمين. على الجهاز، استخدِم منطق استخراج الألوان المتوفّر في AOSP، خاصةً المنطق الذي يأخذ لونًا واحدًا من مصدر الخلفية أو المظهر ويعرضه من خلال 65 واجهة برمجة تطبيقات للألوان. لمعرفة متطلبات الألوان الديناميكية، راجِع مقالة استخدام ميزة "الألوان الديناميكية".

يتضمّن تدفق الألوان الديناميكي الكامل أربع خطوات، كما هو موضّح أدناه:

مظهر Material You المتغير حسب اللون

الشكل 1: ألوان Material You الديناميكية

  1. يغيّر المستخدم الخلفية أو المظهر من خلال أداة اختيار المصنّع الأصلي للجهاز.

  2. يختار المستخدم أحد الخيارات التالية:

    • مظهر الجهاز: عند اختيار هذا الخيار، يختار Android تلقائيًا لونًا واحدًا من مصدر واحد يستوفي المتطلبات.

    • خلفية وتصميم جديدان عند اختياره، يختار منطق AOSP تلقائيًا لون مصدر واحد من الخلفية المحدّدة.

  3. يوسّع إطار عمل AOSP لون المصدر الواحد إلى 5 لوحات ألوان نغمية تتضمّن 13 خيارًا من ناحية اللون النغمي لكل لوحة، وفقًا لمنطق AOSP، ما يؤدي بعد ذلك إلى تعبئة سمات اللون الـ 65.

  4. يستخدم واجهة مستخدم التطبيق 65 سمة لون بطريقة متّسقة في منظومة تطبيقات Android المتكاملة. ننصحك باستخدام لوحة الألوان نفسها لواجهة مستخدم نظام الجهاز والتطبيقات الخاصة بصانعي الأجهزة الأصليين.

تصحيحات Android 12

للحصول على المنطق الكامل لاستخراج ألوان الخلفية وتفعيل الجهاز لملء واجهات برمجة التطبيقات التي تتضمّن 65 لونًا بطريقة متوافقة مع المنظومة المتكاملة، أدرِج الإصلاحات التالية في عملية تنفيذ Android 12:

تحديد ألوان مخصّصة في ThemePicker

إذا كنت تستخدم تطبيق ThemePicker من AOSP، يعرض تطبيق 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" encodin>g<="ut>f-8&q<uot;?
resources
    array >name=&quo<t;co>lor_bu<ndles>"
  <    >  item<color>1/item
  <    >  item<color>2/item
  <    >  item<color>3/ite<m
    >    it<emcolor4/item
    /array

    st>ring< name=&>quot;<bundle_name_color1"Blue/str>ing<
    st>ring <name="bundle_name_color2&qu>ot;Red</string>
    <string name="bundle_name_co>lor3&<quot;Ye>ll<ow/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_co>lor1&qu<ot;#00>00FF/<color
    color name="color_se>condary<_color>1"<;#0000FF/color

    color name=&q>uot;col<or_pri>mary_<color2"#ff0000/color
    color> name=&<quot;c>olor_s<econdary_color2"#ff0000/colo>r

    <color >name=<"color_primary_color3"#ff>ff00/co<lor
  >  colo<r name="color_secondary_colo>r3"<;#ffff>00/co<lor

    color name="color_pri>mary_co<lor4&q>u<ot;#00ff00>/color
    color name="color_secondary_color4"#00ff00/color
/resources

لكل عنصر في مصفوفة حِزم الألوان، يجب أن يكون هناك إدخالان color_primary_item وcolor_secondary_item (ويجب أن يكون كلا اللونَين متطابقَين). قيم هذه color الإدخالات هي رموز الألوان الفعلية لكل لون ليظهر في قسم اللون الأساسي.

الخطوة 1: إنشاء تجربة تخصيص واجهة المستخدم

أداة اختيار المظهر هي المكان الذي يتفاعل فيه المستخدمون مع ميزات تخصيص Material You الجديدة ويختارون من خلالها بين خيارات الألوان أو الإعدادات المُعدّة مسبقًا. وبما أنّه يناسب منتجاتك والخصائص الديمغرافية للمستخدمين، يمكنك منح المستخدمين تجربة تخصيص وألوان أكثر ثراءً من خلال استخدام أداة اختيار المظهر أو أداة اختيار الخلفية.

  • عند استخدام أداة اختيار خلفية، تكون ميزة استخراج ألوان الخلفية مفعّلة تلقائيًا. ومع ذلك، يمكنك إجراء بعض التخصيصات على أداة الاختيار لتقديم المزيد من options للمستخدم.

الخطوة 2: استخراج لون الخلفية إلى لون مصدر

لتفعيل ميزة استخراج ألوان الخلفية، اختَر بعناية الرموز البرمجية لنظام 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 للتشبع 5، سواء كان اللون المستخرَج من الخلفية أو من أحد الإعدادات المُعدّة مسبقًا التي يختارها المستخدم. يضمن ذلك عدم تأثُّر اللون المصدر بالدرجات الخفيفة للألوان الداكنة عند تحويله من لون واحد إلى 65 لونًا نغميًا، ويظل يمثّل اختيار المستخدم. لقراءة الألوان وتعديلها في CAM16، استخدِم Cam#fromInt أو Cam#getInt.

استخدام لوحة ألوان غير ديناميكية: على الأجهزة التي لا تتيح استخراج ألوان الخلفية، يظل بإمكانك ضمان أن تظهر تطبيقات Google والتطبيقات التابعة لجهات خارجية التي تتيح استخدام الألوان الديناميكية بشكلٍ رائع من خلال اتّباع الخطوات التالية:

  • استخدِم لوحة ألوان Material التلقائية عن طريق إيقاف flag_monet في frameworks/base/packages/SystemUI/res/values/flags.xml.
  • تأكَّد من أنّه لا يزال بإمكان المستخدمين تخصيص نظام التشغيل باستخدام أداة اختيار مظاهر مُعدّة مسبقًا.

الخطوة 3: توسيع نطاق اللون المصدر إلى واجهات برمجة التطبيقات للألوان

باستخدام لون المصدر الواحد المستمَد من الخطوة السابقة، ينشئ نظام التشغيل Android 5 لوحات ألوان فريدة (لوحة ألوان مميزة من 1 إلى 3 ولوحة ألوان محايدة من 1 إلى 2)، وتحتوي كل لوحة على 13 لونًا، ويحتوي كل لون على قيم مختلفة للسطوع (من 0 إلى 1000)، ليصبح المجموع هو 65 لونًا. ينفِّذ المنطق الوارد في تصحيحات Android 12 عملية توسيع نطاق الألوان هذه بشكل صحيح، وتصف التفاصيل الواردة أدناه عملية التنفيذ.

للحفاظ على اتساق المطوّرين، يجب أن تستند لوحات الألوان الخمس (accent1 وaccent2 وaccent3 وneutral1 وneutral2) والألوان الـ 13 المقابلة لها إلى لون مصدر واحد مع إجراء التغييرات ذات الصلة على قيم تشبع ودرجة لون CAM16 كما هو موضّح أدناه:

  • system_accent1

    • التشبع: استخدِم القيمة ‎40 لصيغ الألوان التي تنتهي بالأرقام 0، 10، 50، و 100، وإلا استخدِم القيمة ‎48.
    • درجة اللون: نفسها في المصدر
  • system_accent2

    • ‫Chroma: استخدِم "16"
    • درجة اللون: نفسها في المصدر
  • system_accent3

    • التشبّع: استخدِم "32"
    • تدرُّج الألوان: تدوير بمقدار 60 درجة موجبة
  • system_neutral1

    • درجة التشبّع: استخدِم "4".
    • درجة اللون: نفسها في المصدر
  • system_neutral2

    • ‫Chroma: استخدِم "8"
    • درجة اللون: نفسها في المصدر

يتضمّن CTS اختبارات للتحقّق من صحة طلبات البيانات من واجهة برمجة التطبيقات الخاصة بكل من الإضاءة والصبغة. لاستخدامه، استخدِم atest SystemPalette.

الخطوة 4: استخدام الألوان الديناميكية في التطبيقات وواجهة مستخدم النظام

بعد ضبط الألوان الديناميكية على جهاز، تتّبع التطبيقات إرشادات Material ل استخدام الألوان. من المقرّر طرح إرشادات Material Design على material.io بحلول 26 تشرين الأول (أكتوبر) 2021 لكي تتمكّن التطبيقات التابعة لجهات خارجية من استخدامها. بالنسبة إلى واجهة مستخدم النظام والتطبيقات التابعة للجهة الأولى، ننصح بشدة بدمج ألوان ديناميكية في جميع جوانب تجربة المستخدم بطريقة تتناسب مع الأجهزة والعلامة التجارية وتساعدك في تمييز أجهزتك.

للحصول على إرشادات عامة حول الألوان الديناميكية، يُرجى الاطّلاع على ما يلي:

  • استخدِم ألوانًا مميزة للعناصر في المقدّمة في التطبيقات وواجهة مستخدم النظام:

    @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 للألوان وكيفية استخدام واجهات برمجة التطبيقات في SystemUI، يُرجى الاطّلاع على الموارد الإضافية.

الخطوة 5: إضافة خيارات الألوان الديناميكية في عملية تنفيذ AOSP WallpaperPicker

إنشاء إصدار متوافق مع Android 13 والإصدارات الأحدث

اعتبارًا من الإصدار 13 من Android، تم إيقاف 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"
}

يؤدي إجراء ذلك إلى تخطّي عملية استخراج ألوان الخلفية (الخطوة 2) وتوسيع اللون المصدر المقدَّم مباشرةً إلى 65 سمة لون (الخطوة 3).

الخطوة 6: إرسال طلب الدعم

بالإضافة إلى دمج النظام، عليك إرسال طلب وإطلاعنا على اسم علامتك التجارية (Build.MANUFACTURER). بما أنّ معظم التطبيقات التابعة لجهات خارجية تستخدم مكونات Material لنظام التشغيل Android لعرض الألوان الديناميكية، فإنّنا نستخدم قائمة مسموح بها مضمّنة في الرمز البرمجي لتحديد الأجهزة التي دمجت ميزة لوحات الألوان الديناميكية.

حركة

تمنح الحركة السلسة الأجهزة مظهرًا عصريًا ومميّزًا. لتعزيز ثقة المطوّرين ورضاهم والحفاظ عليهما، يجب أن يكون التمرير السريع والتأثيران المتموجَان جزءَين أساسيَين من التأثيرات المتحرّكة السلسة التي يجب أن تبدو متّسقة.

استخدام ميزة "الانتقال السريع للأسفل أو للأعلى" في نظام التشغيل

يتضمّن Android 12 حركة التمرير السريع الديناميكية التي تستجيب بشكلٍ أفضل في شكل تمديد العرض، والتي تظهر عندما يحاول المستخدم التمرير باتجاه حافة القائمة. في ما يلي مثال:

تجاوز حد التمرير في Material You

الشكل 2: تأثير التمرير السريع في Android 12، كما هو موضّح في "الإعدادات"

لضمان اتساق المطوّرين، تأكَّد من أنّ التأثير العام لميزة "الانتقال السريع للأسفل أو للأعلى" على أجهزتك مشابه لما يلي:

  • على الأجهزة التي تعرض قيمة صحيحة لـ 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

الشكل 3: تأثير التموج في Android 12، مع تأثير مملوء أكثر نعومة

لضمان قدرة المطوّرين على توقّع التأثيرات وتقديم تجربة رائعة للمستخدمين، تأكّد من أنّ أثر التموج على أجهزتك مشابه للمثال الموضّح أعلاه. على الرغم من أنّه لست بحاجة إلى تنفيذ أي خطوات دمج محدّدة لتفعيل تأثيرات التأثير المتسلسل، عليك اختبار التأثير على أجهزتك للتحقّق من أي تدهور غير مقصود تمّ إدخاله في عملية التنفيذ.

التطبيقات المصغَّرة

التطبيقات المصغّرة هي مكوّنات رئيسية لأجهزة Android. يتضمّن Android 12 واجهات برمجة تطبيقات وإمكانات جديدة لواجهات برمجة التطبيقات يجب أن توفّرها جميع الشركات المصنّعة للأجهزة الأصلية.

مراجع إضافية

استخدام ألوان واجهة المستخدم الخاصة بالنظام

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

استخدام ألوان Material You

الشكل 4: استخدام الألوان الديناميكية في واجهة مستخدم النظام

تعديلات على سمة اللون في مكتبة Material

ستُعدّل Material سمات المظهر في الإصدار القادم من خلال إنشاء أدوار ألوان تُستخدَم لإضافة لون إلى طرق عرض معيّنة.

دور اللون سمة مظهر Android المظهر الفاتح
الألوان الديناميكية
المظهر الداكن
اللون الديناميكي
اللون الأساسي colorPrimary system_accent1_600 system_accent1_200
على الجهاز الأساسي colorOnPrimary system_accent1_0 system_accent1_800
اللون الثانوي colorSecondary system_accent2_600 system_accent2_200
في مرحلة التعليم الثانوي colorOnSecondary system_accent2_0 system_accent2_800
خطأ colorError لا ينطبق (red_600) لا ينطبق (red_200)
عند الخطأ colorOnError لا ينطبق (أبيض) لا ينطبق (red_900)
الخلفية android:colorBackground system_neutral1_10 system_neutral1_900
في الخلفية colorOnBackground system_neutral1_900 system_neutral1_100
السطح colorSurface system_neutral1_10 system_neutral1_900
على السطح colorOnSurface system_neutral1_900 system_neutral1_100

ستُعدّل Material سمات حالاتها باستخدام المؤشرات التالية:

دور اللون سمة مظهر Android المظهر الفاتح
الألوان الديناميكية
المظهر الداكن
اللون الديناميكي
محتوى الحالة الأساسية colorPrimaryStateContent system_accent1_700 system_accent1_200
طبقة الحالة الأساسية colorPrimaryStateLayer 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
محتوى حالة الحاوية الأساسية colorOnPrimaryContainerStateContent system_accent1_900 system_accent1_900
في طبقة حالة الحاوية الأساسية 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
محتوى حالة العرض colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
طبقة حالة السطح colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
محتوى حالة السعر المعروض colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
طبقة حالة خيار المنتج على السطح colorOnSurfaceVariantStateLayer system_neutral2_700 system_neutral2_200
محتوى حالة الخطأ colorErrorStateContent red800 red200

الأسئلة الشائعة

استخراج الألوان

بعد أن يغيّر المستخدم الخلفية، هل يتم استخراج الألوان تلقائيًا أم يجب تفعيلها من مكان ما؟

من خلال تصحيحات Android 12، يكون استخراج ألوان الخلفية مفعَّلاً تلقائيًا.

يبدأ ThemeOverlayController.java المنطق باستخدام ThemeOverlayController#mOnColorsChangedListener و WallpaperManager#onWallpaperColorsChanged.

بالنسبة إلى الخلفيات المتحركة أو خلفيات الفيديو، هل يمكننا معرفة متى تأخذ ميزة استخراج الألوان اللون من الشاشة؟ قد يريد بعض المستخدمين استخدام الألوان من اللقطة الأخيرة لأنّها تظهر لفترة أطول.

يتم بدء عملية استخراج الألوان عندما يضبط المستخدم الخلفية أو بعد دورة تشغيل/إيقاف الشاشة (استجابةً لحدث WallpaperEngine#notifyColorsChanged). يتم تطبيق حدث WallpaperColors الأخير (من الخلفية الحية) بعد أن يُطفئ المستخدم الشاشة ويشغّلها مرة أخرى.

أداة اختيار المظهر/الخلفية

كيف يمكنني تفعيل أداة اختيار المظهر لعرض ألوان مصدر متعددة للمستخدمين لتحديدها بدلاً من اللون الأكثر تكرارًا؟ هل هناك طريقة للحصول على هذه الألوان من منطق الاستخراج؟

نعم. في أداة اختيار المظاهر، يمكنك استخدام ColorScheme#getSeedColors(wallpaperColors: WallpaperColors).

تتوفّر ميزة في أسماء هواتف Pixel تُعرف باسم رمز مخصّص. هل هو مضمّن في التصحيحات الثلاثة التي شاركتها؟ كيف يمكن لمصنّعي المعدّات الأصلية تنفيذ ذلك؟

لا، إنّ الرموز المستوحاة من مواضيع معيّنة متوفّرة في الإصدار التجريبي ولا تتوفّر في Android 12.

هل هناك طريقة لاستخدام تطبيق "خلفيات Google" مع تفعيل ميزتَي استخراج الألوان واختيارها؟

نعم. يمكن تنفيذ الميزات في أحدث إصدار من تطبيق Google Wallpaper من خلال اتّباع خطوات الدمج الموضّحة سابقًا في هذه الصفحة.

يُرجى التواصل مع مدير حسابك لدى Google للاطّلاع على مزيد من التفاصيل.

هل يمكن لشركة Google مشاركة التطبيق أو رمز المصدر لكي يتمكّن المصنّعون الأصليون للأجهزة من تنفيذ إصدار خاص بهم من ميزة معاينة الألوان الديناميكية في قائمة الإعدادات، والتي تبدو مشابهة لقسم المعاينة المعروض في تطبيق "أداة اختيار الخلفيات" من Google؟

الفئتان الرئيسيتان اللتان تعرِضان المعاينة هما WallpaperPicker2 و Launcher3.

شاشة معاينة الخلفية هي WallpaperSectionController.

كيف يمكن تنفيذ المعاينة بعد تغيير اللون، كما هو موضّح في تطبيق "خلفيات Google"؟

يتوقّع تطبيق "أداة اختيار الخلفية" توفُّر ContentProvider من مشغّل التطبيقات (يتوفر هذا الخيار في مشغّل التطبيقات المستنِد إلى Launcher3). يتم تقديم المعاينة من قِبل GridCustomizationsProvider في "مشغّل التطبيقات"، ويجب الإشارة إليها في البيانات الوصفية لنشاط "مشغّل التطبيقات" الرئيسي لكي يقرأها تطبيق الخلفية والتصميم. يتم تنفيذ كل ذلك في ملف ‎AOSP's Launcher3 وهو متاح لمصنعي الأجهزة الأصليين.