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:
Abbildung 1. Dynamischer Farbfluss von Material You
Der Benutzer ändert das Hintergrundbild oder Thema über die OEM-Auswahl.
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.
AOSP erweitert die einzelne Quellfarbe gemäß der AOSP-Logik in 5 Tonpaletten mit jeweils 13 Tonfarbvarianten, die dann die 65 Farbattribute füllen.
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:
Obligatorisch
Wärmstens empfohlen
- Race-Bedingung beim Festlegen der Boot-Farb-Sysprops behoben.
- Erlauben Sie Overlays, über Designänderungen benachrichtigt zu werden
- Race-Bedingung beim Festlegen der Boot-Farb-Sysprops behoben (Runde 2)
- Verschieben Sie FeatureFlags in das Flags-Paket.
- Implementieren Sie die Multi-User-Theming-Unterstützung korrekt
- Behebung, dass die angegebene Option für die Hintergrundfarbe nach dem Neustart fehlt
- Fehler bei der Berechnung des Tertiärfarbtons behoben
- Lassen Sie nicht zu, dass Hintergrund-Apps das Thema ändern
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
unterframeworks/base/packages/SystemUI/res/values/flags.xml
isttrue
. - Ein System -Stub- APK mit dem Paketnamen ist in
themes_stub_package
in der Dateipackages/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
inframeworks/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:
- Chroma: Verwenden Sie „16“
- Farbton: gleich wie Quelle
- Chroma: Verwenden Sie „32“
- Farbton: um 60 Grad positiv drehen
- Chroma: Verwenden Sie „4“
- Farbton: gleich wie Quelle
- 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:
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ürRecyclerView
-
androidx.core:core:1.7.0-alpha01
fürNestedScrollView
undEdgeEffectCompat
-
androidx.viewpager:viewpager:1.1-alpha01
fürViewPager
-
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 überEdgeEffectCompat.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.
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.
Unterstützen Sie in Ihrem Betriebssystem Entwickler-APIs im Zusammenhang mit Widget-Layouts, Größen und Softwareparametern (z. B. Größe abgerundeter Ecken). Ihre Implementierung sollte Widgets korrekt dabei unterstützen, Parameter über APIs bereitzustellen und sicherzustellen, dass Widgets in der Größe anpassbar und vom Benutzer konfigurierbar sind.
Nutzen Sie in Ihren Apps die neuen API-Funktionen, um nach Möglichkeit neue Erstanbieter-Widgets zu aktualisieren oder zu erstellen. Gehen Sie für alle Erstanbieter-App-Widgets in Ihrem Zuständigkeitsbereich die unten stehende Entwickler-Checkliste durch.
- Die Priorität basiert auf Empfehlungen der Plattform.
- Für Einzelheiten zu einer Empfehlung folgen Sie dem Link in der Spalte „Änderung“.
Bereich Ändern Priorität der Umsetzung Verbessern Sie das Heimerlebnis Fügen Sie skalierbare Vorschauen hinzu P1 Fügen Sie eine Widget-Beschreibung hinzu P1 Erleichtern Sie die Personalisierung von Widgets P2 (optional) Ermöglichen Sie sanftere Übergänge P0 Vermeiden Sie Übertragungstrampoline P0 Übernehmen Sie Widget-Richtlinien Verbessern Sie Widget-Größen und -Layouts P2 Wenden Sie dynamische Farben an P0 Implementieren Sie abgerundete Ecken P0 Fügen Sie neue zusammengesetzte Schaltflächen hinzu P2 Vereinfachen Sie den vorhandenen Widget-Code Vereinfachen Sie RemoteView-Sammlungen P2 Vereinfachen Sie die RemoteView-Laufzeit P2
Zusätzliche Ressourcen
Verwendung der SysUI-Farben
(Akzent1 = A1, Akzent2 = A2, Akzent3 = A3, Neutral1 = N1, Neutral2 = N2)
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.