Material, das Sie entwerfen

Ab Android 12 konzentriert sich Material You Design auf Ausdruck und Flüssigkeit im Android-Betriebssystem mit dem Ziel, Benutzern dabei zu helfen, ein einziges, zusammenhängendes Erlebnis zu schaffen und zu besitzen, das auf ihre Bedürfnisse zugeschnitten ist. Als Android-Partner werden Sie dazu ermutigt, von Ihnen entworfenes Material in den folgenden Bereichen in Ihre Android-Geräte zu integrieren:

  • Dynamische Farbe
  • Bewegung
  • Widgets

Dynamische Farbe

Dynamische Farben sind das Herzstück des von Ihnen gestalteten Materials und ein wichtiger Teil der mehrjährigen Strategie von Android, seinen Benutzern eine einfachere und umfassendere Anpassung zu bieten, wie es bei keinem anderen Gerät der Fall ist. Material, das Sie anbieten:

  • Benutzern und Entwicklern steht eine konsistente, umfassende Geschichte der Personalisierung zur Verfügung, die auf jedem Android-Gerät verfügbar ist.

  • Android-OEMs haben die Möglichkeit, die System-Benutzeroberfläche und Erstanbieter-Apps weiterhin auf eine Art und Weise zu innovieren, die mit Farbe, Marke und Form ihrer Hardware und Marke übereinstimmt.

Um die Vorteile dynamischer Farben zu nutzen, verwenden Sie die Farbextraktionsgeschichte von Android 12 Material You als wichtigen Bestandteil Ihres Softwareangebots für Benutzer. Verwenden Sie auf dem Gerät die Farbextraktionslogik von AOSP, insbesondere die Logik, die eine einzelne Hintergrund- oder Theme-Quellfarbe aufnimmt und über 65 Farb-APIs ausgibt. Informationen zu dynamischen Farbanforderungen finden Sie unter Verwenden dynamischer Farben .

Der vollständige dynamische Farbfluss umfasst vier Schritte, wie unten dargestellt:

Material, das Sie färben

Abbildung 1. Dynamischer Farbfluss von Material You

  1. Der Benutzer ändert das Hintergrundbild oder Thema über die OEM-Auswahl.

  2. Der Benutzer wählt eine der folgenden Optionen:

    • Gerätethema. Bei Auswahl wählt Android automatisch eine einzelne Quellfarbe aus, die den Anforderungen entspricht.

    • Neues Hintergrundbild + Thema. Bei Auswahl wählt die AOSP-Logik automatisch eine einzelne Quellfarbe aus dem ausgewählten Hintergrundbild aus.

  3. AOSP erweitert die einzelne Quellfarbe gemäß der AOSP-Logik in 5 Tonpaletten mit jeweils 13 Tonfarbvarianten, die dann die 65 Farbattribute füllen.

  4. Die App-Benutzeroberfläche verwendet die 65 Farbattribute auf eine Weise, die im gesamten Android-App-Ökosystem konsistent ist. Wir empfehlen Ihnen, für die Systembenutzeroberfläche des Geräts und OEM-spezifische Apps dieselbe Farbpalette zu verwenden.

Android 12-Patches

Um die End-to-End-Logik für die Hintergrundfarbenextraktion zu erhalten und dem Gerät zu ermöglichen, die 65-Farben-APIs auf eine Weise zu füllen, die mit dem Ökosystem konsistent ist, fügen Sie die folgenden Patches in Ihre Android 12-Implementierung ein:

Angeben benutzerdefinierter Farben für den ThemePicker

Wenn Sie die AOSP ThemePicker-App verwenden, zeigt die WallpaperPicker-App den Farbbereich an, wenn beide der folgenden Bedingungen erfüllt sind:

  • flag_monet unter frameworks/base/packages/SystemUI/res/values/flags.xml ist true .
  • Ein System -Stub- APK mit dem Paketnamen ist in themes_stub_package in der Datei packages/apps/ThemePicker/res/values/override.xml definiert.

Stub-APK-Format

Eine Beispielversion dieser APK finden Sie unter packages/apps/ThemePicker/themes .

Dieses APK sollte nur Ressourcen enthalten, in denen die verfügbaren Grundfarben und deren Namen aufgeführt sind.

Der Stub sollte eine XML-Datei unter res/xml mit folgendem Format enthalten:

<?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>

In dieser Datei hat jedes item in color_bundles einen eindeutigen Namen, solange die folgenden Zeichenfolgen den Namen bundle_name_ item haben.

Für jede Farbe sollte eine Zeichenfolge bundle_name_ item mit einem beschreibenden Namen für jede Farbe vorhanden sein. Diese können übersetzt werden, indem die entsprechenden übersetzten Zeichenfolgen in die res/values- language code eingefügt werden.

Die tatsächlichen Farbwerte können entweder in derselben XML-Datei oder in einer separaten Ressourcen-XML-Datei mit dem folgenden Format vorliegen:

<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>

Für jedes Element im Farbbündel-Array sollte es einen Eintrag color_primary_ item und einen Eintrag color_secondary_ item geben (und beide Farben sollten dieselbe Farbe haben). Die Werte für diese color sind die tatsächlichen Farbcodes für jede Farbe, die im Abschnitt „Grundfarbe“ angezeigt werden sollen.

Schritt 1: Erstellen Sie ein User-Theming-Erlebnis

In der Themenauswahl können Benutzer mit den neuen Personalisierungsfunktionen von Material You interagieren und möglicherweise zwischen Farboptionen oder Voreinstellungen wählen. Wenn es zu Ihrem Produkt und Ihrer Benutzergruppe passt, können Sie den Benutzern durch die Verwendung einer Themenauswahl oder einer Hintergrundauswahl ein umfassenderes Personalisierungs- und Farberlebnis bieten.

  • Bei Verwendung einer Hintergrundauswahl ist die Extraktion der Hintergrundfarbe standardmäßig aktiviert. Sie können jedoch einige Anpassungen an der Auswahl vornehmen, um dem Benutzer mehr Optionen bereitzustellen.

Schritt 2: Tapetenfarbe in eine Quellfarbe extrahieren

Um die Hintergrundfarbenextraktion zu aktivieren, wählen Sie die oben aufgeführten Android 12-Patches aus (diese Funktionalität wird in einer zukünftigen AOSP-Version standardmäßig aktiviert). Die AOSP-Logik, die die Hintergrundextraktion auslöst, beginnt bei frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java auf ThemeOverlayController#mOnColorsChangedListener “ über WallpaperManager#onWallpaperColorsChanged “. Wir empfehlen die Verwendung der unveränderten AOSP-Logik, um ein konsistentes Entwicklungserlebnis zu gewährleisten.

Standardmäßig wählt die Logik die Farbe mit der höchsten Frequenz aus, die für die Verwendung geeignet ist. Um andere vom Algorithmus zurückgegebene Quellfarben zu nutzen und diese Farben den Benutzern in der Themenauswahl anzuzeigen, verwenden Sie ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) .

Um für die Verwendung geeignet zu sein, muss eine Quellfarbe (unabhängig davon, ob sie aus einem Hintergrundbild extrahiert wurde oder eine vom Benutzer gewählte Voreinstellung ist) einen CAM16- Chromawert von mindestens 5 haben; Dadurch wird sichergestellt, dass die Quellfarbe bei der Konvertierung von einer Einzelfarbe in 65 Tonfarben nicht durch subtile dunkle Töne beeinträchtigt wird und weiterhin repräsentativ für die Benutzerauswahl bleibt. Um Farben in CAM16 zu lesen und zu ändern, verwenden Sie Cam#fromInt oder Cam#getInt .

Verwenden einer nicht-dynamischen Farbpalette Bei Geräten, die die Extraktion von Hintergrundfarben nicht unterstützen, können Sie dennoch sicherstellen, dass Google-Apps und Apps von Drittanbietern, die dynamische Farben unterstützen, wie folgt gut aussehen:

  • Verwenden Sie die Standard-Materialpalette, indem Sie flag_monet in frameworks/base/packages/SystemUI/res/values/flags.xml deaktivieren.
  • Stellen Sie sicher, dass Benutzer ihr Betriebssystem mithilfe einer voreingestellten Themenauswahl weiterhin personalisieren können.

Schritt 3: Erweitern Sie die Quellfarbe in Farb-APIs

Unter Verwendung der einzelnen Quellfarbe, die aus dem vorherigen Schritt abgeleitet wurde, generiert Android 5 einzigartige Tonpaletten (Akzent 1–3, Neutral 1–2), wobei jede Palette 13 Farben und jede Farbe unterschiedliche Luminanzwerte (0 bis 1000) für a enthält insgesamt 65 Farben. Die in den Android 12-Patches bereitgestellte Logik implementiert diese Farberweiterung korrekt; Die unten aufgeführten Details beschreiben die Implementierung.

Aus Gründen der Entwicklerkonsistenz müssen die 5 Tonpaletten (Akzent1, Akzent2, Akzent3, Neutral1, Neutral2) und ihre entsprechenden 13 Farben auf der einzelnen Quellfarbe mit den entsprechenden Änderungen an den Chroma- und Farbtonwerten von CAM16 basieren, wie unten beschrieben:

  • system_accent1

    • Chroma: Verwenden Sie „40“ für Farbvarianten, die auf 0 , 10 , 50 und 100 enden, andernfalls „48“.
    • Farbton: gleich wie Quelle
  • system_accent2

    • Chroma: Verwenden Sie „16“
    • Farbton: gleich wie Quelle
  • system_accent3

    • Chroma: Verwenden Sie „32“
    • Farbton: um 60 Grad positiv drehen
  • system_neutral1

    • Chroma: Verwenden Sie „4“
    • Farbton: gleich wie Quelle
  • system_neutral2

    • Chroma: Verwenden Sie „8“
    • Farbton: gleich wie Quelle

CTS umfasst Tests zur Validierung von Luminanz- und Farbton-API-Aufrufen. Verwenden Sie zum Ausführen atest SystemPalette .

Schritt 4: Verwenden Sie dynamische Farben in Apps und der System-Benutzeroberfläche

Nachdem dynamische Farben auf einem Gerät festgelegt wurden, befolgen Apps die Materialrichtlinien, um die Farben zu verwenden. Die Materialrichtlinien sollen bis zum 26. Oktober 2021 auf material.io veröffentlicht werden, damit sie von Drittanbieter-Apps übernommen werden können. Für die System-Benutzeroberfläche und Erstanbieter-Apps empfehlen wir dringend, dynamische Farben in das gesamte Benutzererlebnis zu integrieren, sodass sie zu Ihrer Hardware und Marke passen und Ihnen helfen, Ihre Geräte zu differenzieren.

Allgemeine Hinweise zu dynamischen Farben finden Sie hier:

  • Verwenden Sie Akzentfarben für Vordergrundelemente in Apps und der System-Benutzeroberfläche:

    @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
    
  • Verwenden Sie neutrale Farben für Hintergrundelemente in Apps und der System-Benutzeroberfläche:

    @android:color/system_neutral1_0 … 1000 // most-used background color group
    @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
    

Weitere Informationen darüber, wie Material You Farben zuordnet und wie APIs in SysUI verwendet werden, finden Sie unter Zusätzliche Ressourcen .

Schritt 5: Fügen Sie dynamische Farboptionen zu Ihrer AOSP WallpaperPicker-Implementierung hinzu

Gebaut für Android 13 und höher

Ab Android 13 ist android.theme.customization.accent_color veraltet. Ein neues Attribut android.theme.customization.theme_style wurde hinzugefügt, um verschiedene Farbvarianten zu unterstützen. Wir haben derzeit vier Varianten in der Codebasis:

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.

Diese werden an Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES gesendet, wie unten in JSON gezeigt:

{
    "android.theme.customization.system_palette":"B1611C",
    "android.theme.customization.theme_style":"EXPRESSIVE"
}

Gebaut für Android 12 und niedriger

Bei Verwendung einer benutzerdefinierten Designauswahl muss das Gerät eine gültige Quellfarbe an Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES senden, indem es eine JSON-Datei im folgenden Format bereitstellt (wobei 746BC1 ein Beispiel für eine gültige Quellfarbe ist):

{
      "android.theme.customization.system_palette":"746BC1",
      "android.theme.customization.accent_color":"746BC1"
}

Dadurch wird die Extraktion der Hintergrundfarbe übersprungen (Schritt 2) und die bereitgestellte Quellfarbe direkt in 65 Farbattribute erweitert (Schritt 3).

Schritt 6: Reichen Sie ein Ticket ein

Neben der Systemintegration müssen Sie ein Ticket einreichen und uns Ihren Markennamen ( Build.MANUFACTURER ) mitteilen. Da die meisten Apps von Drittanbietern die Materialkomponenten für Android verwenden, um dynamische Farben anzuzeigen, verwenden wir eine fest codierte Zulassungsliste , um festzustellen, welche Geräte die Funktion „Dynamische Farbtonpaletten“ integriert haben.

Bewegung

Dank der flüssigen Bewegung fühlen sich die Geräte modern und hochwertig an. Um das Vertrauen und die Zufriedenheit der Entwickler aufzubauen und aufrechtzuerhalten, sind Overscroll und Ripple zwei Schlüsselelemente der flüssigen Bewegung, die konsistent aussehen und sich anfühlen müssen.

Verwenden Sie Overscroll in Ihrem Betriebssystem

Android 12 verfügt über eine reaktionsschnellere, dynamischere Overscroll-Bewegung in Form einer Ansichtsstrecke, die angezeigt wird, wenn der Benutzer versucht, über den Rand einer Liste hinaus zu scrollen. Ein Beispiel ist unten dargestellt:

Material, das Sie überscrollen

Abbildung 2. Overscroll-Effekt von Android 12, wie in den Einstellungen gezeigt

Stellen Sie aus Gründen der Entwicklerkonsistenz sicher, dass der allgemeine Overscroll-Effekt auf Ihren Geräten dem folgenden ähnelt:

  • Auf Geräten, die für ActivityManager.isHighEndGfx() „true“ zurückgeben, ist der Overscroll-Effekt eine nichtlineare Ausdehnung des Bildschirms (wie oben gezeigt).

  • Bei Geräten mit geringerer Leistung wird der Dehnungseffekt auf eine lineare Dehnung vereinfacht (um die Belastung des Systems zu reduzieren).

Overscroll in Erstanbieter-Apps verwenden

Wenn Sie benutzerdefinierte Ansichten verwenden, müssen Sie möglicherweise einige Apps und die Benutzeroberfläche des Systems anpassen, die den Streckungseffekt verwenden.

  • Um Stretch-Overscroll zu unterstützen, aktualisieren Sie auf die neuesten Bibliotheken:

    • androidx.recyclerview:recyclerview:1.3.0-alpha01 für RecyclerView
    • androidx.core:core:1.7.0-alpha01 für NestedScrollView und EdgeEffectCompat
    • androidx.viewpager:viewpager:1.1-alpha01 für ViewPager
  • Berücksichtigen Sie bei benutzerdefinierten Layouts, die EdgeEffect verwenden, die folgenden UX-Änderungen:

    • Beim Stretch-Overscroll sollten Benutzer nicht mit dem Inhalt des Layouts interagieren, während es gestreckt wird. Benutzer sollten nur die Dehnung selbst manipulieren und beispielsweise nicht in der Lage sein, einen Knopf im Inhalt zu drücken.

    • Wenn Benutzer den Inhalt berühren, während die EdgeEffect -Animation ausgeführt wird, sollten sie die Animation abfangen und die Möglichkeit haben, die Dehnung zu manipulieren. Der aktuelle Pull-Wert ist über EdgeEffectCompat.getDistance() verfügbar.

    • Um den Pull-Wert zu manipulieren und die verbrauchte Menge zurückzugeben, verwenden Sie onPullDistance() . Dies ermöglicht Entwicklern einen reibungslosen Übergang vom Dehnen zum Scrollen, wenn der Finger den Inhalt über die Startposition hinaus dehnt.

    • Wenn Sie mit verschachteltem Scrollen arbeiten und der Inhalt gestreckt wird, sollte die Streckung die Berührungsbewegung vor dem verschachtelten Inhalt verbrauchen. Andernfalls kann es beim Verschachteln zu einem Scrollen kommen, wenn der Finger die Richtung ändert, anstatt die Streckung aufzuheben.

Einzelheiten zum Overscroll finden Sie unter Animieren einer Scroll-Geste .

Verwenden Sie Ripple (Touch-Feedback) in Ihrem Betriebssystem

Android 12 verfügt über eine weichere, subtilere Touch-Welle, um Benutzern beim Heruntertippen Feedback zu geben.

Material, das Sie kräuseln

Abbildung 3. Welleneffekt von Android 12 mit einer weicheren Füllanimation

Stellen Sie sicher, dass der Welleneffekt auf Ihren Geräten dem oben gezeigten Beispiel ähnelt, um die Vorhersehbarkeit für Entwickler zu gewährleisten und ein großartiges Benutzererlebnis zu bieten. Sie müssen zwar keine spezifischen Integrationsschritte durchführen, um Ripple-Effekte zu unterstützen, Sie sollten jedoch die Auswirkungen auf Ihren Geräten testen, um zu prüfen, ob in Ihrer Implementierung unbeabsichtigte Regressionen eingeführt wurden.

Widgets

Widgets sind Schlüsselkomponenten eines Android-Geräts. Android 12 enthält neue APIs und API-Funktionen, die alle OEMs unterstützen sollten.

Zusätzliche Ressourcen

Verwendung der SysUI-Farben

(Akzent1 = A1, Akzent2 = A2, Akzent3 = A3, Neutral1 = N1, Neutral2 = N2)

Material, das Sie färben

Abbildung 4. Dynamische Farbverwendung in der System-Benutzeroberfläche

Aktualisierungen der Farbattribute der Materialbibliothek

Material wird in der kommenden Version seine Designattribute aktualisieren, indem Farbrollen erstellt werden, die zur Bereitstellung von Farbe für bestimmte Ansichten verwendet werden.

Farbrolle Android-Theme-Attribut Lichtthema
Dynamische Farbe
Dunkles Thema
Dynamische Farbe
Primär colorPrimary system_accent1_600 system_accent1_200
Auf der Grundschule colorOnPrimary system_accent1_0 system_accent1_800
Sekundär FarbeSekundär system_accent2_600 system_accent2_200
Auf der Sekundarstufe colorOnSecondary system_accent2_0 system_accent2_800
Fehler Farbfehler N/A (red_600) N/A (red_200)
Bei Fehler colorOnError N/A (weiß) N/A (red_900)
Hintergrund android:colorBackground system_neutral1_10 system_neutral1_900
Im Hintergrund colorOnBackground system_neutral1_900 system_neutral1_100
Oberfläche colorSurface system_neutral1_10 system_neutral1_900
Auf der Oberfläche colorOnSurface system_neutral1_900 system_neutral1_100

Material aktualisiert seine Statusattribute mit den folgenden Zeigern:

Farbrolle Android-Theme-Attribut Lichtthema
Dynamische Farbe
Dunkles Thema
Dynamische Farbe
Primärer Zustandsinhalt colorPrimaryStateContent system_accent1_700 system_accent1_200
Primäre Zustandsschicht colorPrimaryStateLayer system_accent1_600 system_accent1_300
Sekundärer Zustandsinhalt colorSecondaryStateContent system_accent2_700 system_accent2_200
Sekundäre Zustandsschicht colorSecondaryStateLayer system_accent2_600 system_accent2_300
Zum primären Zustandsinhalt colorOnPrimaryStateContent system_accent1_0 system_accent1_800
Auf der primären Statusebene colorOnPrimaryStateLayer system_accent1_900 system_accent1_800
Über Sekundärstaatsinhalte colorOnSecondaryStateContent system_accent2_0 system_accent2_800
Auf der sekundären Statusebene colorOnSecondaryStateLayer system_accent2_900 system_accent2_800
Zum Statusinhalt des primären Containers colorOnPrimaryContainerStateContent system_accent1_900 system_accent1_900
Auf der primären Containerstatusebene colorOnPrimaryContainerStateLayer system_accent1_900 system_accent1_900
Zum sekundären Containerstatusinhalt colorOnSecondaryContainerStateContent system_accent2_900 system_accent2_900
Auf der sekundären Containerstatusebene colorOnSecondaryContainerStateLayer system_accent2_900 system_accent2_900
Zum tertiären Containerzustandsinhalt colorOnTertiaryContainerStateContent system_accent3_900 system_accent3_900
Auf der tertiären Container-Statusschicht colorOnTertiaryContainerStateLayer system_accent3_900 system_accent3_900
Zum Oberflächenzustandsinhalt colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
Auf der Oberflächenzustandsebene colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
Auf der Oberfläche Variantenzustandsinhalte colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
Auf Oberflächenvariantenzustandsebene colorOnSurfaceVariantStateLayer system_neutral2_700 system_neutral2_200
Inhalt des Fehlerstatus colorErrorStateContent rot800 rot200

FAQs

Farbextraktion

Erfolgt die Farbextraktion automatisch, wenn ein Benutzer ein Hintergrundbild ändert, oder muss sie irgendwo ausgelöst werden?

Mit den Android 12-Patches ist die Hintergrundfarbenextraktion standardmäßig aktiviert .

ThemeOverlayController.java löst die Logik mit ThemeOverlayController#mOnColorsChangedListener und WallpaperManager#onWallpaperColorsChanged aus.

Können wir bei Live-Hintergründen oder Video-Hintergründen wissen, wann die Farbextraktion die Farbe vom Bildschirm übernimmt? Einige Benutzer möchten möglicherweise die Farben des letzten Bildes, da dieses am längsten angezeigt wird.

Die Farbextraktion wird ausgelöst, wenn der Benutzer das Hintergrundbild festlegt oder nach einem Aus- und Einschalten des Bildschirms (als Reaktion auf WallpaperEngine#notifyColorsChanged ). Das letzte WallpaperColors Ereignis (aus dem Live-Hintergrundbild) wird angewendet, nachdem der Benutzer den Bildschirm aus- und wieder einschaltet.

Themen-/Hintergrundauswahl

Wie aktiviere ich die Themenauswahl, um den Benutzern mehrere Quellfarben zur Auswahl als die Farbe mit der höchsten Häufigkeit anzuzeigen? Gibt es eine Möglichkeit, diese Farben aus der Extraktionslogik abzurufen?

Ja. In Ihrer Themenauswahl können Sie ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) verwenden.

Es gibt eine Funktion für Pixelnamen als thematisches Symbol . Ist es in den drei Patches enthalten, die Sie geteilt haben? Wie können OEMs das umsetzen?

Nein. Themensymbole befinden sich in der Betaphase und sind in Android 12 nicht verfügbar.

Gibt es eine Möglichkeit, die Google Wallpaper-App mit aktivierten Funktionen zur Farbextraktion und -auswahl zu verwenden?

Ja. Die Funktionen können in der neuesten Version der Google Wallpaper-App implementiert werden, indem Sie die zuvor auf dieser Seite beschriebenen Integrationsschritte befolgen.

Für weitere Einzelheiten wenden Sie sich bitte an Ihren TAM.

Kann Google die App oder den Quellcode weitergeben, damit OEMs ihre eigene Version der dynamischen Farbvorschau in ihrem Einstellungsmenü implementieren können, die dem Vorschaubereich ähnelt, der in der Wallpaper-Picker-App von Google angezeigt wird?

Die Hauptklassen, die die Vorschau rendern, sind WallpaperPicker2 und Launcher3 .

Der Hintergrundvorschaubildschirm ist WallpaperSectionController .

Wie implementiert man die Vorschau nach dem Ändern der Farbe, wie in der Google Wallpaper-App gezeigt?

Die Wallpaper-Auswahl-App erwartet, dass ein ContentProvider im Launcher verfügbar ist (ein Launcher3 -basierter Launcher hat ihn). Die Vorschau wird von GridCustomizationsProvider in Launcher bereitgestellt, auf den in den Metadaten der Hauptaktivität von Launcher verwiesen werden sollte, damit die Hintergrund- und Stil-App sie lesen kann. All dies ist im Launcher3 von AOSP implementiert und steht den OEMs zur Verfügung.