עיצוב Material You

החל מ-Android 12, העיצוב של Material You מתמקד בביטוי ובגמישות במערכת ההפעלה Android, במטרה לעזור למשתמשים ליצור חוויה אחת מגובשת שמותאמת לצרכים שלהם. כשותפים של Android, מומלץ לשלב את העיצוב של Material You במכשירי Android בתחומים הבאים:

  • צבע דינמי
  • תנועה
  • ווידג'טים

צבע דינמי

הצבע הדינמי הוא מרכיב מרכזי בעיצוב Material You וחלק חשוב מהאסטרטגיה הרב-שנתית של Android להעניק למשתמשים אפשרויות התאמה אישית פשוטות ומעמיקות יותר, באופן ששום מכשיר אחר לא מציע. Material You כולל:

  • למשתמשים ולמפתחים יש סיפור עשיר ועקבי של התאמה אישית שזמין בכל מכשיר Android.

  • יצרני ציוד מקורי (OEM) של Android יכולים להמשיך לחדש את ממשק המשתמש של המערכת ואת האפליקציות של הצד הראשון באופן שתואם לחומרה ולצבעי המותג, ליצרן ולצורה שלהם.

כדי לנצל את היתרונות של הצבע הדינמי, כדאי להשתמש בסיפור התאמת ערכת הצבעים של Material You ב-Android 12 כחלק מרכזי מהצעת התוכנה שלכם למשתמשים. במכשיר, משתמשים בלוגיקה של התאמת ערכת הצבעים שנמצאת ב-AOSP, במיוחד בלוגיקה שמקבלת טפט יחיד או צבע מקור של ערכת נושא ומפיקה אותו באמצעות 65 ממשקי API של צבעים. לדרישות בנוגע לצבע דינמי, אפשר לעיין במאמר בנושא שימוש בצבע דינמי.

התהליך המלא של צבעים דינמיים כולל ארבעה שלבים, כפי שמוצג באיור הבא:

Material You Color Flow

איור 1. תהליך העבודה של צבע דינמי ב-Material You

  1. המשתמש משנה את הטפט או העיצוב באמצעות הכלי לבחירת טפטים של יצרן הציוד המקורי (OEM).

  2. המשתמש בוחר באחת מהאפשרויות הבאות:

    • העיצוב שמוגדר במכשיר. כשבוחרים באפשרות הזו, מערכת Android בוחרת באופן אוטומטי צבע מקור יחיד שעומד בדרישות.

    • טפט חדש + עיצוב חדש. כשבוחרים באפשרות הזו, הלוגיקה של AOSP בוחרת באופן אוטומטי צבע מקור יחיד מתוך הטפט שנבחר.

  3. מערכת AOSP מרחיבה את הצבע ממקור יחיד ל-5 פלטות של גוונים עם 13 וריאציות של גוונים בכל אחת, בהתאם ללוגיקה של AOSP, ואז מאכלסת את 65 מאפייני הצבע.

  4. ממשק המשתמש של האפליקציה משתמש ב-65 מאפייני הצבע באופן עקבי בכל המערכת האקולוגית של אפליקציות Android. מומלץ להשתמש באותה פלטת צבעים בממשק המשתמש של המערכת במכשיר ובאפליקציות ספציפיות ליצרן הציוד המקורי (OEM).

תיקונים ל-Android 12

כדי לקבל את הלוגיקה מקצה לקצה של התאמת ערכת הצבעים מהטפט וכדי לאפשר למכשיר למלא את ממשקי ה-API של 65 הצבעים באופן שתואם למערכת האקולוגית, צריך לכלול את התיקונים הבאים בהטמעה של Android 12:

הגדרת צבעים מותאמים אישית ב-ThemePicker

אם אתם משתמשים באפליקציה ThemePicker של AOSP, האפליקציה WallpaperPicker מציגה את קטע הצבעים אם שני התנאים הבאים מתקיימים:

  • האירוע flag_monet בתאריך frameworks/base/packages/SystemUI/res/values/flags.xml הוא true.
  • קובץ APK של stub של המערכת עם שם החבילה מוגדר ב-themes_stub_package בקובץ packages/apps/ThemePicker/res/values/override.xml.

פורמט של קובץ APK מסוג Stub

גרסת דוגמה של קובץ ה-APK הזה נמצאת בpackages/apps/ThemePicker/themes.

קובץ ה-APK הזה צריך להכיל רק משאבים עם פרטים על הצבעים הבסיסיים הזמינים והשמות שלהם.

ה-stub צריך להכיל קובץ 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 האלה הם קודי הצבעים בפועל של כל צבע שיוצג בקטע צבע בסיסי.

שלב 1: יצירת חוויית שימוש עם עיצובים

בכלי לבחירת עיצוב המשתמשים יכולים להתנסות באפשרויות החדשות להתאמה אישית של Material You, ולבחור מבין אפשרויות צבע או הגדרות קבועות מראש. בהתאם למוצר ולנתונים הדמוגרפיים של המשתמשים, אפשר להציע למשתמשים חוויה עשירה יותר של התאמה אישית וצבעים באמצעות כלי לבחירת עיצוב או כלי לבחירת טפט.

  • כשמשתמשים בכלי לבחירת טפטים, התאמת ערכת הצבעים מהטפט מופעלת כברירת מחדל. עם זאת, אפשר לבצע התאמות אישיות מסוימות בכלי לבחירת תאריכים כדי לספק למשתמש אפשרויות נוספות.

שלב 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).

כדי שצבע המקור יהיה מתאים לשימוש (בין אם הוא נלקח מטפט או מוגדר מראש על ידי המשתמש), הוא צריך להיות בעל ערך כרומה מינימלי של 5 בשיטת CAM16. כך אפשר לוודא שצבע המקור לא מושפע מגוונים כהים עדינים כשהוא מומר מצבע יחיד ל-65 צבעים טונאליים, ושהוא מייצג את הבחירה של המשתמש. כדי לקרוא ולשנות צבעים ב-CAM16, משתמשים ב-Cam#fromInt או ב-Cam#getInt.

שימוש בפלטת צבעים לא דינמית במכשירים שלא תומכים בהתאמת ערכת הצבעים מהטפט, עדיין אפשר לוודא שאפליקציות Google ואפליקציות צד שלישי שתומכות בצבע דינמי ייראו מצוין. לשם כך, צריך לבצע את הפעולות הבאות:

  • כדי להשתמש בפלטת ברירת המחדל של Material, משביתים את האפשרות flag_monet ב-frameworks/base/packages/SystemUI/res/values/flags.xml.
  • מוודאים שהמשתמשים עדיין יכולים להתאים אישית את מערכת ההפעלה שלהם באמצעות בוחר עיצובים מוגדר מראש.

שלב 3: הרחבת צבע המקור ל-API של צבעים

באמצעות צבע המקור היחיד שהתקבל בשלב הקודם, מערכת Android יוצרת 5 פלטות גוונים ייחודיות (accent 1-3, neutral 1-2), כשכל פלטה כוללת 13 צבעים, וכל צבע כולל ערכי בהירות שונים (0 עד 1,000), כך שמתקבלים בסך הכול 65 צבעים. הלוגיקה שמופיעה בתיקוני Android 12מיישמת את הרחבת הצבעים הזו בצורה נכונה. הפרטים שמופיעים בהמשך מתארים את ההטמעה.

כדי לשמור על עקביות בין מפתחים, 5 לוחות הצבעים הטונאליים (accent1,‏ accent2,‏ accent3,‏ neutral1,‏ neutral2) ו-13 הצבעים התואמים שלהם צריכים להתבסס על צבע המקור היחיד עם השינויים המתאימים בערכי הכרומה והגוון של CAM16, כפי שמתואר בהמשך:

  • system_accent1

    • רוויה: משתמשים בערך '40' לגרסאות צבע שמסתיימות ב-0,‏ 10,‏ 50 ו-100, אחרת משתמשים בערך '48'
    • גוון: זהה למקור
  • system_accent2

    • Chroma: use "16"
    • גוון: זהה למקור
  • system_accent3

    • Chroma: use "32"
    • גוון: סיבוב ב-60 מעלות בכיוון החיובי
  • system_neutral1

    • Chroma: use "4"
    • גוון: זהה למקור
  • system_neutral2

    • Chroma: use "8"
    • גוון: זהה למקור

חבילת ה-CTS כוללת בדיקות לאימות של קריאות ל-API של בהירות וגוון. כדי להריץ את הבדיקות האלה, אפשר להשתמש בפקודה atest SystemPalette.

שלב 4: שימוש בצבעים דינמיים באפליקציות ובממשק המשתמש של המערכת

אחרי שמגדירים צבעים דינמיים במכשיר, האפליקציות פועלות לפי ההנחיות של Material כדי להשתמש בצבעים. ההנחיות לגבי חומרים יפורסמו בכתובת 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 ועל השימוש בממשקי API ב-SysUI זמין במקורות מידע נוספים.

שלב 5: מוסיפים אפשרויות של צבעים דינמיים בהטמעה של WallpaperPicker ב-AOSP

פיתוח ל-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"
}

במקרה כזה, המערכת תדלג על שלב 2 (חילוץ צבע הטפט) ותבצע ישירות את שלב 3 (הרחבת צבע המקור שצוין ל-65 מאפייני צבע).

שלב 6: שליחת כרטיס

בנוסף לשילוב המערכת, צריך לפתוח כרטיס ולציין את שם המותג (Build.MANUFACTURER). מכיוון שרוב האפליקציות של צד שלישי משתמשות ב-Material Components for Android כדי להציג צבעים דינמיים, אנחנו משתמשים ברשימת היתרים עם קידוד קשיח כדי לדעת באילו מכשירים שולבה התכונה לוחות צבעים דינמיים.

תנועה

תנועה חלקה גורמת למכשירים להרגיש מודרניים ואיכותיים. כדי לבנות ולשמור על אמון המפתחים ולשמח אותם, חשוב שהגלילה מעבר לקצה והאפקט של האדוות ייראו וירגישו עקביים. הם שני חלקים חשובים בתנועה חלקה.

שימוש בגלילה מעבר לקצה במערכת ההפעלה

‫Android 12 כולל תנועת גלילה מעבר לקצה רספונסיבית ודינמית יותר בצורה של מתיחת התצוגה, שמוצגת כשהמשתמש מנסה לגלול מעבר לקצה של רשימה. דוגמה:

גלילה מעבר לקצה ב-Material You

איור 2. אפקט הגלילה העודפת ב-Android 12, כפי שמוצג בהגדרות

כדי לשמור על עקביות הפיתוח, חשוב לוודא שהאפקט הכולל של גלילה מעבר לקצה במכשירים שלכם דומה לזה שמוצג כאן:

  • במכשירים שבהם הערך שמוחזר עבור ActivityManager.isHighEndGfx() הוא true, אפקט הגלילה העודפת הוא מתיחה לא לינארית של המסך (כפי שמוצג למעלה).

  • במכשירים עם ביצועים נמוכים יותר, אפקט המתיחה הוא פשוט יותר וכולל מתיחה לינארית (כדי להפחית את העומס על המערכת).

שימוש בגלילה מעבר לקצה באפליקציות של Google

כשמשתמשים בתצוגות מותאמות אישית, יכול להיות שיהיה צורך לבצע שינויים באפליקציות מסוימות ובממשק המשתמש של המערכת שמשתמשים באפקט המתיחה.

  • כדי לתמוך בגלילה מעבר לקצה עם מתיחה, צריך לשדרג לספריות העדכניות:

    • 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 כולל ממשקי API חדשים ויכולות API חדשות שכל יצרני הציוד המקורי (OEM) צריכים לתמוך בהם.

מקורות מידע נוספים

שימוש בצבעים בממשק המערכת

(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
Secondary colorSecondary system_accent2_600 system_accent2_200
במשני colorOnSecondary system_accent2_0 system_accent2_800
שגיאה colorError לא רלוונטי (red_600) לא רלוונטי (red_200)
On Error 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
ב-Surface colorOnSurface system_neutral1_900 system_neutral1_100

מאפייני המצב של החומר יעודכנו עם ההפניות הבאות:

תפקיד הצבע מאפיין של עיצוב ל-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
בשכבת המצב של Surface colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
מידע על תוכן במצב Surface Variant colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
On Surface Variant State Layer 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 באמצעות שלבי ההטמעה שמתוארים קודם בדף הזה.

לפרטים נוספים, פנו ל-TAM.

האם Google יכולה לשתף את האפליקציה או את קוד המקור כדי שיצרני ציוד מקורי יוכלו להטמיע גרסה משלהם של תצוגה מקדימה של צבעים דינמיים בתפריט ההגדרות שלהם, שתיראה דומה לקטע התצוגה המקדימה שמוצג באפליקציית בחירת הטפטים של Google?

המחלקות העיקריות שמעבדות את התצוגה המקדימה הן WallpaperPicker2 ו- Launcher3.

מסך התצוגה המקדימה של הטפט הוא WallpaperSectionController.

איך מטמיעים את התצוגה המקדימה אחרי שינוי הצבע, כמו שמוצג באפליקציית הטפטים של Google?

אפליקציית בחירת הטפטים מצפה שContentProvider יהיה זמין ממרכז האפליקציות (במרכז אפליקציות שמבוסס על Launcher3 הוא זמין). התצוגה המקדימה מסופקת על ידי GridCustomizationsProvider במרכז האפליקציות, שצריך להיות מוזכר במטא-נתונים של הפעילות הראשית במרכז האפליקציות כדי שאפליקציית הטפטים והסגנון תוכל לקרוא אותו. כל זה מיושם ב-Launcher3 של AOSP וזמין ליצרני ציוד מקורי (OEM).