Ab Android 12 liegt der Schwerpunkt des Material You-Designs auf Ausdruck und Fluidität im Android-Betriebssystem. Ziel ist es, Nutzern zu helfen, eine einheitliche, auf ihre Bedürfnisse zugeschnittene Oberfläche zu erstellen und zu nutzen. Als Android-Partner empfehlen wir dir, Material You Design in den folgenden Bereichen in deine Android-Geräte zu integrieren:
- Dynamische Farben
- Bewegung
- Widgets
Dynamische Farben
Dynamische Farben sind das Herzstück von Material You und ein wichtiger Bestandteil der mehrjährigen Strategie von Android, um seinen Nutzern einfachere und umfassendere Anpassungen zu ermöglichen, die dies bei keinem anderen Gerät der Fall ist. Material You bietet:
Nutzern und Entwicklern eine einheitliche, umfassende Personalisierung auf jedem Android-Gerät bieten.
Android-OEMs haben die Gelegenheit, System-UI und eigene Apps weiter zu entwickeln, und zwar im Einklang mit ihrer Hardware und ihrer Markenfarbe, ‐marke und ‐form.
Wenn du dynamische Farben nutzen möchtest, nutze die „Material You“-Story von Android 12 zur Farbextraktion als wichtigen Bestandteil deines Softwareangebots für Nutzer. Verwenden Sie auf dem Gerät die Farbextraktionslogik aus AOSP, insbesondere die Logik, die eine einzelne Hintergrund- oder Designquelle annimmt und über 65 Farb-APIs ausgibt. Informationen zu den Anforderungen für dynamische Farben finden Sie unter Dynamische Farben verwenden.
Der vollständige dynamische Farbablauf umfasst vier Schritte, wie unten dargestellt:
Abbildung 1. Dynamischer Farbverlauf in Material You
Der Nutzer ändert den Hintergrund oder das Design über die OEM-Auswahl.
Der Nutzer wählt eine der folgenden Optionen aus:
Gerätedesign Wenn diese Option ausgewählt ist, wählt Android automatisch eine einzelne Quellfarbe aus, die den Anforderungen entspricht.
Neuer Hintergrund und neues Design Wenn diese Option ausgewählt ist, wählt die AOSP-Logik automatisch eine einzelne Quellfarbe aus dem ausgewählten Hintergrund aus.
AOSP erweitert die einzelne Quellfarbe gemäß der AOSP-Logik in 5 Tonpaletten mit jeweils 13 Tonvarianten, die dann die 65 Farbattribute ausfüllen.
In der App-UI werden die 65 Farbattribute so verwendet, dass sie in der gesamten Android-App-Umgebung einheitlich sind. Wir empfehlen, dieselbe Farbpalette für die System-UI des Geräts und OEM-spezifische Apps zu verwenden.
Android 12-Patches
Füge die folgenden Patches in deine Android 12-Implementierung ein, um die End-to-End-Logik für die Extraktion von Hintergrundfarben zu erhalten und das Gerät die 65-Farben-APIs entsprechend der Umgebung füllen zu können:
Obligatorisch
Dringend empfohlen
- Die Race-Bedingung beim Festlegen der Sysprops der Startfarbe wurde behoben.
- Overlays über Designänderungen benachrichtigen lassen
- Rennbedingung beim Festlegen der Sysprops der Startfarbe behoben (Runde 2)
- Verschieben Sie FeatureFlags in das Flags-Paket.
- Unterstützung von Themen für mehrere Nutzer korrekt implementieren
- Problem behoben, bei dem die angegebene Hintergrundfarbe nach dem Neustart fehlte
- Fehler beim Berechnen des tertiären Farbtons beheben
- Hintergrund-Apps dürfen das Design nicht ändern
Benutzerdefinierte Farben in der ThemePicker angeben
Wenn du die AOSP ThemePicker-App verwendest, wird in der BackgroundPicker-App der Farbabschnitt angezeigt, wenn beide der folgenden Bedingungen erfüllt sind:
flag_monet
amframeworks/base/packages/SystemUI/res/values/flags.xml
isttrue
.- Ein Stub-APK des Systems mit dem Paketnamen ist in der Datei
themes_stub_package
in der Dateipackages/apps/ThemePicker/res/values/override.xml
definiert.
Stub-APK-Format
Eine Beispielversion dieses APK findest du unter packages/apps/ThemePicker/themes
.
Dieses APK sollte nur Ressourcen enthalten, die die verfügbaren Grundfarben und ihre Namen angeben.
Der Stub sollte eine XML-Datei unter res/xml
im folgenden 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 jede item
innerhalb von color_bundles
einen eindeutigen Namen, solange die folgenden Strings den Namen bundle_name_item
haben.
Für jede Farbe sollte ein bundle_name_item
-String mit einem aussagekräftigen Namen für jede Farbe vorhanden sein. Sie können diese übersetzen, indem Sie die entsprechenden übersetzten Strings in die res/values-language code
-Verzeichnisse einfügen.
Die tatsächlichen Farbwerte können sich entweder in derselben XML-Datei oder in einer separaten Ressourcen-XML-Datei mit dem folgenden Format befinden:
<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 jeden Artikel im Array „color_bundles“ sollte ein color_primary_item
- und ein color_secondary_item
-Eintrag vorhanden sein. Beide Farben müssen dieselbe Farbe haben. Die Werte für diese color
-Einträge sind die tatsächlichen Farbcodes für jede Farbe, die im Bereich Grundfarbe angezeigt werden soll.
Schritt 1: Nutzerthemen erstellen
In der Themenauswahl können Nutzer die neuen Personalisierungsfunktionen von Material You nutzen und zwischen Farboptionen oder -vorlagen wählen. Da es zu Ihrem Produkt und zu den demografischen Merkmalen der Nutzer passt, können Sie Nutzern mithilfe einer Designauswahl oder einer Hintergrundauswahl mehr Personalisierungs- und Farboptionen bieten.
- Bei Verwendung einer Hintergrundauswahl ist die Farbextraktion für den Hintergrund standardmäßig aktiviert. Sie können die Auswahl jedoch anpassen, um den Nutzern mehr Optionen zur Verfügung zu stellen.
Schritt 2: Hintergrundfarbe in eine Quellfarbe extrahieren
Um die Extraktion von Hintergrundfarben zu aktivieren, wählen Sie die oben aufgeführten Android 12-Patches aus. Diese Funktion wird in einer zukünftigen AOSP-Version standardmäßig aktiviert sein.
Die AOSP-Logik, die die Hintergrundextraktion auslöst, beginnt bei frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
, ThemeOverlayController#mOnColorsChangedListener
und WallpaperManager#onWallpaperColorsChanged
. Wir empfehlen die Verwendung der unveränderten AOSP-Logik, um eine einheitliche Entwicklungsumgebung zu gewährleisten.
Standardmäßig wählt die Logik die Farbe mit der höchsten Häufigkeit aus, die sich für die Verwendung eignet.
Mit ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
können Sie andere vom Algorithmus zurückgegebene Quellfarben nutzen und Nutzern in der Designauswahl präsentieren.
Damit eine Quellfarbe verwendet werden kann, muss sie (unabhängig davon, ob sie aus einem Hintergrund oder einer vom Nutzer ausgewählten Voreinstellung extrahiert wurde) einen CAM16-Chromawert von mindestens 5 haben. So wird sichergestellt, dass die Quellfarbe nicht von subtilen dunklen Tönen beeinflusst wird, wenn sie von einer einzelnen Farbe in 65 Tonfarben umgewandelt wird, und sie bleibt repräsentativ für die Auswahl des Nutzers. Verwenden Sie Cam#fromInt
oder Cam#getInt
, um Farben in CAM16 zu lesen und zu ändern.
Nicht dynamische Farbpalette verwenden Auf Geräten, die die Farbextraktion aus dem Hintergrund nicht unterstützen, können Sie dennoch dafür sorgen, dass Google-Apps und Drittanbieter-Apps, die dynamische Farben unterstützen, gut aussehen. Gehen Sie dazu so vor:
- Verwenden Sie die Standard-Materialpalette, indem Sie
flag_monet
aufframeworks/base/packages/SystemUI/res/values/flags.xml
deaktivieren.- Sorgen Sie dafür, dass Nutzer weiterhin ihr Betriebssystem mit einer voreingestellten Designauswahl personalisieren können.
Schritt 3: Quellfarbe auf Farb-APIs ausweiten
Anhand der aus dem vorherigen Schritt abgeleiteten einzelnen Quellfarbe generiert Android fünf einzigartige Farbpaletten (Akzent 1–3, neutral 1–2), jede Palette mit 13 Farben und jede Farbe mit unterschiedlichen Leuchtdichtewerten (0 bis 1.000), insgesamt also 65 Farben. Die Logik in den Android 12-Patches implementiert diese Farberweiterung korrekt. Die folgenden Details beschreiben die Implementierung.
Für Entwicklerkonsistenz müssen die fünf Farbpaletten (Akzent 1, Akzent 2, Akzent 3, Neutral 1, Neutral 2) und die zugehörigen 13 Farben auf der einzelnen Quellfarbe basieren. Dabei müssen die Werte für den Farbton und die Farbsättigung von CAM16 entsprechend geändert werden.
-
- Chroma: „16“ verwenden
- Farbton: wie bei der Quelle
-
- Chroma: „32“ verwenden
- Farbton: um 60 Grad drehen
-
- Chroma: „4“ verwenden
- Farbton: wie bei der Quelle
-
- Chroma: „8“ verwenden
- Farbton: wie bei der Quelle
CTS enthält Tests zur Validierung von Luminanz- und Farbton-API-Aufrufen. Verwenden Sie atest SystemPalette
, um den Befehl auszuführen.
Schritt 4: Dynamische Farben in Apps und in der Systemoberfläche verwenden
Nachdem dynamische Farben auf einem Gerät festgelegt wurden, verwenden Apps die Farben gemäß den Material Design-Richtlinien. Die Material Design-Richtlinien für Drittanbieter-Apps werden bis zum 26. Oktober 2021 auf material.io veröffentlicht. Für die Systemoberfläche und die Apps von Google empfehlen wir dringend, dynamische Farben in die gesamte Benutzeroberfläche einzubinden, sodass sie zu Ihrer Hardware und Marke passen und Sie Ihre Geräte so besser von anderen unterscheiden können.
Allgemeine Informationen zu dynamischen Farben:
Verwenden Sie Akzentfarben für Vordergrundelemente in Apps und der System-UI:
@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 in der Systemoberflä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 dazu, wie Farben in Material You zugeordnet und APIs in der SysUI verwendet werden, finden Sie unter Zusätzliche Ressourcen.
Schritt 5: Dynamische Farboptionen in die AOSP BackgroundPicker-Implementierung einfügen
Für Android 13 und höher erstellen
Ab Android 13 wird android.theme.customization.accent_color
nicht mehr unterstützt. Es wird ein neues Attribut android.theme.customization.theme_style
hinzugefügt, um verschiedene Farbvarianten zu unterstützen. Derzeit gibt es 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"
}
Für Android 12 und niedriger entwickeln
Wenn du eine benutzerdefinierte Themenauswahl verwendest, muss das Gerät eine gültige Quellfarbe an Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
senden. Dazu muss eine JSON-Datei im folgenden Format bereitgestellt werden. Dabei ist 746BC1
ein Beispiel für eine gültige Quellfarbe:
{
"android.theme.customization.system_palette":"746BC1",
"android.theme.customization.accent_color":"746BC1"
}
Dadurch wird die Extraktion der Hintergrundfarbe (Schritt 2) übersprungen und die angegebene Quellfarbe wird direkt in 65 Farbattribute erweitert (Schritt 3).
Schritt 6: Supportticket einreichen
Neben der Systemintegration musst du ein Ticket einreichen und uns deinen Markennamen (Build.MANUFACTURER
) mitteilen. Da die meisten Drittanbieter-Apps die Material Components for Android zum Anzeigen dynamischer Farben verwenden, verwenden wir eine hartcodierte Zulassungsliste, um festzustellen, auf welchen Geräten die Funktion Dynamische Farbpaletten integriert ist.
Bewegung
Durch flüssige Bewegungen wirken Geräte modern und hochwertig. Um das Vertrauen und die Zufriedenheit der Entwickler zu stärken und aufrechtzuerhalten, sind Overscroll und Welleneffekt zwei wichtige Elemente der flüssigen Bewegung, die einheitlich aussehen und sich anfühlen müssen.
Overscroll in Ihrem Betriebssystem verwenden
Android 12 bietet eine reaktionsschnellere, dynamischere Überscroll-Bewegung in Form einer Ansichtsdehnung, die angezeigt wird, wenn der Nutzer versucht, über den Rand einer Liste hinauszuscrollen. Hier ein Beispiel:
Abbildung 2. Überlaufeffekt von Android 12, wie in den Einstellungen dargestellt
Achten Sie darauf, dass der Overscroll-Effekt auf Ihren Geräten einheitlich ist und in etwa so aussieht:
Auf Geräten, die für
ActivityManager.isHighEndGfx()
„wahr“ zurückgeben, ist der Overscroll-Effekt eine nicht lineare Streckung des Bildschirms (wie oben gezeigt).Auf Geräten mit geringerer Leistung wird der Stretch-Effekt vereinfacht, um die Belastung des Systems zu reduzieren.
Overscroll in eigenen Apps verwenden
Wenn Sie benutzerdefinierte Ansichten verwenden, müssen Sie möglicherweise einige Apps und die System-UI anpassen, die den Streckungseffekt verwenden.
Aktualisieren Sie auf die neuesten Bibliotheken, um das Überblenden beim Scrollen zu unterstützen:
androidx.recyclerview:recyclerview:1.3.0-alpha01
fürRecyclerView
androidx.core:core:1.7.0-alpha01
fürNestedScrollView
undEdgeEffectCompat
androidx.viewpager:viewpager:1.1-alpha01
fürViewPager
Für benutzerdefinierte Layouts, in denen
EdgeEffect
verwendet wird, sollten Sie die folgenden UX-Änderungen berücksichtigen:Beim Stretch-Overscroll sollten Nutzer nicht mit dem Inhalt des Layouts interagieren, während es gestreckt wird. Nutzer sollten nur die Streckkurve selbst bearbeiten können und nicht beispielsweise eine Schaltfläche im Inhalt drücken.
Wenn Nutzer die Inhalte während der
EdgeEffect
-Animation berühren, sollte die Animation angehalten werden und sie sollten die Streckung steuern können. Der aktuelle Pull-Wert ist unterEdgeEffectCompat.getDistance()
verfügbar.Wenn du den Pull-Wert manipulieren und den verbrauchten Betrag zurückgeben möchtest, verwende
onPullDistance()
. So können Entwickler einen reibungslosen Übergang vom Strecken zum Scrollen ermöglichen, wenn der Nutzer den Inhalt über die Ausgangsposition hinaus dehnt.Wenn Sie mit verschachteltem Scrollen arbeiten und die Inhalte gestreckt werden, sollte die Touch-Bewegung vor den verschachtelten Inhalten verarbeitet werden. Andernfalls wird beim Verändern der Fingerrichtung möglicherweise das Nesting gescrollt, anstatt die Streckung aufzuheben.
Weitere Informationen zum Überscrollen finden Sie unter Scrollgeste animieren.
Ripple (Touch-Feedback) in Ihrem Betriebssystem verwenden
Android 12 bietet eine weichere, subtilere Welle, um Nutzern beim Tippen Feedback zu geben.
Abbildung 3 Welleneffekt von Android 12 mit einer weicheren Füllanimation
Für eine gute Vorhersehbarkeit für Entwickler und eine hohe Nutzerfreundlichkeit sollten Sie dafür sorgen, dass die Auswirkungen auf Ihren Geräten dem oben gezeigten Beispiel ähneln. Sie müssen zwar keine speziellen Integrationsschritte ausführen, um die Auswirkungen zu unterstützen, sollten aber die Auswirkungen auf Ihren Geräten testen, um unerwünschte Rückschritte bei der Implementierung zu erkennen.
Widgets
Widgets sind die Hauptkomponenten eines Android-Geräts. Android 12 enthält neue APIs und API-Funktionen, die alle OEMs unterstützen sollten.
Unterstützen Sie in Ihrem Betriebssystem Entwickler-APIs für Widget-Layouts, ‑Größen und ‑Softwareparameter (z. B. Größe der abgerundeten Ecken). Ihre Implementierung sollte Widgets beim Bereitstellen von Parametern über APIs und beim Anpassen der Größe und Konfiguration durch den Nutzer korrekt unterstützen.
Nutzen Sie in Ihren Apps die neuen API-Funktionen, um nach Möglichkeit eigene Widgets zu aktualisieren oder neue zu erstellen. Gehen Sie für alle selbst erhobenen App-Widgets in Ihrem Zuständigkeitsbereich die folgende Checkliste für Entwickler durch.
- Die Priorität basiert auf Empfehlungen der Plattform.
- Klicken Sie in der Spalte „Änderung“ auf den Link, um Details zu einer Empfehlung aufzurufen.
Standort Ändern Implementierungspriorität Home-App verbessern Skalierbare Vorschauen hinzufügen P1 Beschreibung für das Widget hinzufügen P1 Einfachere Personalisierung von Widgets P2 (optional) Fließendere Übergänge ermöglichen P0 Keine Rundfunktrampoline P0 Richtlinien für Widgets übernehmen Verbesserte Widget-Größen und ‑Layouts P2 Dynamische Farben anwenden P0 Abgerundete Ecken implementieren P0 Neue zusammengesetzte Schaltflächen hinzufügen P2 Vorhandenen Widget-Code vereinfachen RemoteView-Sammlungen vereinfachen P2 RemoteView-Laufzeit vereinfachen P2
Weitere Informationen
Verwendung von SysUI-Farben
(accent1 = A1, accent2 = A2, accent3 = A3, neutral1 = N1, neutral2 = N2)
Abbildung 4 Dynamische Farbnutzung in der System-UI
Aktualisierungen des Farbattributs der Materialbibliothek
In der nächsten Version werden die Designattribute von Material aktualisiert. Dazu werden Farbrollen erstellt, mit denen bestimmte Ansichten eingefärbt werden.
Farbrolle | Android-Designattribut | Helles Design Dynamische Farben |
Dunkles Design Dynamische Farbe |
---|---|---|---|
Primär | colorPrimär | system_accent1_600 | Systemakzent1_200 |
Im primären Bereich | colorOnPrimary | system_accent1_0 | system_accent1_800 |
Zweiter Track | FarbeSekundär | system_accent2_600 | system_accent2_200 |
Auf sekundärer Ebene | colorOnSecondary | system_accent2_0 | system_accent2_800 |
Fehler | colorError | – (rot_600) | – (rot_200) |
Bei Fehler | colorOnError | – (weiß) | – (rot_900) |
Hintergrund | android:colorBackground | system_neutral1_10 | system_neutral1_900 |
Im Hintergrund | colorOnBackground | system_neutral1_900 | system_neutral1_100 |
Surface | colorSurface | system_neutral1_10 | system_neutral1_900 |
Auf der Oberfläche | colorOnSurface | system_neutral1_900 | system_neutral1_100 |
Die Statusattribute von Material werden mit den folgenden Hinweisen aktualisiert:
Farbrolle | Android-Designattribut | Helles Design Dynamische Farben |
Dunkles Design Dynamische Farbe |
---|---|---|---|
Inhalt des primären Zustands | colorPrimaryStateContent | system_accent1_700 | system_accent1_200 |
Ebene mit primärem Status | colorPrimaryStateLayer | system_accent1_600 | Systemakzent1_300 |
Inhalt des sekundären Zustands | colorSecondaryStateContent | system_accent2_700 | Systemakzent2_200 |
Sekundäre Statusebene | colorSecondaryStateLayer | system_accent2_600 | system_accent2_300 |
Inhalte des primären Status | colorOnPrimaryStateContent | system_accent1_0 | system_accent1_800 |
Auf der primären Statusebene | colorOnPrimaryStateLayer | system_accent1_900 | system_accent1_800 |
Inhalte für den sekundären Status | colorOnsecondaryStateContent | system_accent2_0 | system_accent2_800 |
Auf sekundärer Statusebene | colorOnSecondaryStateLayer | system_accent2_900 | system_accent2_800 |
Für Inhalt des primären Containerstatus | colorOnPrimaryContainerStateContent | system_accent1_900 | system_accent1_900 |
Auf der Ebene des primären Containerstatus | colorOnPrimaryContainerStateLayer | system_accent1_900 | system_accent1_900 |
Sekundärer Containerstatus | colorOnSecondaryContainerStateContent | system_accent2_900 | system_accent2_900 |
Auf sekundärer Containerstatusebene | colorOnSekundäreContainerStateLayer | system_accent2_900 | system_accent2_900 |
Inhalte zum Status von Tertiärcontainern | colorOnTertiaryContainerStateContent | system_accent3_900 | system_accent3_900 |
Auf der Ebene des tertiären Containerstatus | colorOnTertiaryContainerStateLayer | system_accent3_900 | system_accent3_900 |
Inhalte zum Status der Oberfläche | colorOnSurfaceStateContent | system_neutral1_900 | system_neutral1_100 |
Ebene für den Oberflächenstatus | colorOnSurfaceStateLayer | systemneutral1_900 | system_neutral1_100 |
Inhalt des Oberflächenvariantenstatus | colorOnSurfaceVariantStateContent | system_neutral2_700 | system_neutral2_200 |
Ebene „Variantenstatus auf Oberfläche“ | colorOnSurfaceVariantStateLayer | system_neutral2_700 | system_neutral2_200 |
Inhalt des Fehlerstatus | colorErrorStateContent | red800 | red200 |
Häufig gestellte Fragen
Farbextraktion
Wird die Farbextraktion automatisch durchgeführt, sobald ein Nutzer einen Hintergrund ändert, oder muss sie irgendwo ausgelöst werden?
Mit den Android 12-Patches ist die Hintergrundfarbextraktion standardmäßig aktiviert.
ThemeOverlayController.java
löst die Logik mit ThemeOverlayController#mOnColorsChangedListener
und WallpaperManager#onWallpaperColorsChanged
aus.
Können Sie uns bei Live-Hintergründen oder Video-Hintergründen sagen, wann die Farbextraktion die Farbe vom Display nimmt? Einige Nutzer möchten möglicherweise die Farben aus dem letzten Frame, da dieser am meisten angezeigt wird.
Die Farbextraktion wird ausgelöst, wenn der Nutzer den Hintergrund festlegt oder nach einem Ein-/Ausschalten des Bildschirms (als Reaktion auf WallpaperEngine#notifyColorsChanged
). Das letzte WallpaperColors
-Ereignis (vom Live-Hintergrund) wird angewendet, nachdem der Nutzer den Bildschirm aus- und wieder eingeschaltet hat.
Design-/Hintergrundauswahl
Wie kann ich festlegen, dass in der Designauswahl mehrere Quellfarben angezeigt werden, aus denen Nutzer auswählen können, anstatt nur die Farbe mit der höchsten Häufigkeit? Gibt es eine Möglichkeit, diese Farben aus der Extraktionslogik zu erhalten?
Ja. In der Designauswahl können Sie ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
verwenden.
Es gibt eine Funktion in Pixel-Namen als Symbolsymbole. Ist es in den drei von Ihnen geteilten Patches enthalten? Wie können OEMs das umsetzen?
Nein. Thematische Symbole befinden sich in der Betaphase und sind in Android 12 nicht verfügbar.
Gibt es eine Möglichkeit, die Google-Hintergrund-App mit aktivierten Farbextraktions- und Auswahlfunktionen zu verwenden?
Ja. Die Funktionen können in der neuesten Version der Google Wallpaper App implementiert werden. Folgen Sie dazu der Anleitung oben auf dieser Seite.
Weitere Informationen erhalten Sie von Ihrem TAM.
Kann Google die App oder den Quellcode freigeben, damit OEMs eine eigene Version der dynamischen Farbvorschau in ihrem Einstellungsmenü implementieren können, die dem Vorschaubereich in der Hintergrundauswahl-App von Google ähnelt?
Die Hauptklassen, die die Vorschau rendern, sind WallpaperPicker2
und Launcher3
.
Der Bildschirm mit der Hintergrundvorschau ist WallpaperSectionController
.
Wie implementiere ich die Vorabversion nach dem Ändern der Farbe (wie in der Google Hintergründe App gezeigt)?
Die App „Hintergrundauswahl“ erwartet, dass ein ContentProvider
über den Launcher verfügbar ist (ein Launcher3
-basierter Launcher hat einen). Die Vorschau wird von GridCustomizationsProvider
im Launcher bereitgestellt, auf den in den Metadaten der Hauptaktivität des Launchers verwiesen werden muss, damit der Hintergrund und die Stil-App sie lesen können. All dies ist im Launcher3 von AOSP implementiert und für die OEMs verfügbar.