Die Monet-Theme-Engine von Material You ist das große Highlight von Android 12, und so funktioniert sie

Das Material You von Google ist nicht allzu kompliziert zu verstehen, obwohl es nicht viele Informationen an einem Ort gibt. Schauen Sie es sich hier an!

Quicklinks

  • So funktioniert die Monet-Theme-Engine
  • Was ist mit Runtime Resource Overlays (RROs) passiert?
  • Material You verbessert sich immer noch
  • Änderungen in Android 13

Mit Abstand die größte Veränderung Android 12 Ist Material Sie, die neueste Version der Material-Designsprache von Google. Material You, wie Google es beschreibt: „ist bestrebt, Designs zu schaffen, die für jeden Stil persönlich, für jeden Bedarf zugänglich, lebendig und anpassungsfähig für jeden Bildschirm sind.„Bei der Entwicklung von Android 12 hat Google eine neue Theme-Engine mit dem Codenamen „monet“ erstellt, die eine reichhaltige Palette an Pastellfarben generiert abgeleitet vom Hintergrundbild des Benutzers. Diese Farben werden dann auf verschiedene Teile des Systems angewendet und ihre Werte werden über eine verfügbar gemacht API, die die Anwendungen des Benutzers aufrufen können, sodass Apps entscheiden können, ob sie auch ihre Farbe ändern möchten Benutzeroberfläche. Google hat sich voll und ganz auf Material You konzentriert und das Unternehmen hat die meisten seiner Apps aktualisiert, um dynamische Farben zu integrieren.

Als Crashkurs zur Geschichte des Materialdesigns startete es zunächst mit Android 5 Lollipop, wobei der Schwerpunkt auf der Benutzererfahrung lag. Als Google bringt es auf den Punkt„Material ist ein anpassungsfähiges System aus Richtlinien, Komponenten und Werkzeugen, das die Best Practices von unterstützt Benutzeroberflächendesign.“ Es zeichnete sich durch flache, pastellfarbene Farbpaletten, Tiefe, sanfte Beleuchtung und Realismus aus Physik. Mit Android 9 Pie kam Material Design 2 auf den Markt, allerdings war die visuelle Überarbeitung bei weitem nicht so umfassend wie bei der ersten Material Design-Iteration. Android 12 sah den Start von Materialdesign 3, was eine bedeutendere Überarbeitung darstellt.

Wenn Sie jedoch die Farbthemen-Engine weglassen, ist Material You nicht wirklich vorhanden Das anders. Tatsächlich verschwindet das persönliche Element, das durch das „Du“ bezeichnet wird, mehr oder weniger vollständig.

So funktioniert die Monet-Theme-Engine

Die „Monet“-Themen-Engine ist der Kern der Magie, wenn es um Material You geht, und es ist der Algorithmus, der entscheidet, welche Farben aus einem Hintergrundbild ausgewählt werden. „Monet“ wurde AOSP in Android 12L hinzugefügt. Auch Custom-ROM-Entwickler können dies implementieren Open-Source-Implementierung von „Monet“. App-Entwickler von Drittanbietern sind kostenlos um Unterstützung für dynamische Farben hinzuzufügen im Moment, auch wenn es derzeit nur auf einer begrenzten Anzahl von Geräten funktioniert.

Die erste Frage, die sich die meisten Menschen zu Material You stellen, ist sicher, wie es gelingt, jedes Mal Farben auszuwählen, die zusammenpassen und einen guten Kontrast bilden. Ich habe unzählige Hintergrundbilder ausprobiert, um den Farbauswahlalgorithmus zu durchbrechen, aber keinem davon ist es gelungen. Es werden immer noch Farben ausgewählt, die jedes Mal zusammenpassen, was, gelinde gesagt, eine beeindruckende Leistung ist. Um einen Einblick in die Funktionsweise des Farbauswahlalgorithmus von Android 12 zu erhalten, gibt es eines der beiden Easter Eggs in Form eines Widgets, das Sie Ihrem Desktop hinzufügen können. Das Widget zeigt alle von Monet ausgewählten Farben an und Sie können darauf tippen, um es im Vollbildmodus anzuzeigen. Im Vollbildmodus können Sie dann auf eine Farbe tippen, um sie zu teilen. Wenn Sie es teilen, sieht die Ausgabe wie folgt aus:

A1-600 (@android:color/system_accent1_600)
currently: #626200

Wenn ein Benutzer sein Hintergrundbild auf einem Android 12-Gerät ändert, wird das Bild analysiert, um eine Farbe auszuwählen und wählen Sie anhand eines Anfangs-Seeds algorithmisch Primär-, Sekundär-, Tertiär- und Fehlerfarben aus Farbe. Außerdem wurden zwei neutrale Farben gewählt, die Material You seine Gesamttönung verleihen. Gleichzeitig werden Farbtheorie und Barrierefreiheitsregeln angewendet. Aus diesen Farben erstellt der Algorithmus Tonpaletten von 0 % Luminanz (SCHWARZ) bis 100 % (WEISS). Beim dynamischen oder benutzerdefinierten Design werden Werte in diesen Tonpaletten verwendet, um die Designattribute für diesen Farbbereich festzulegen. Es extrahiert bis zu 128 Farben aus der Tapete und stellt sie als Zwischenstufe in den CIELAB-Farbraum auf CAM16 abgebildet. Der CAM16 CFarbe AAussehen Model wird zum Sortieren und Filtern der Farben verwendet, um die tatsächliche Ausgangsfarbe zu bestimmen. Anschließend werden Paletten mit dieser Ausgangsfarbe erstellt. Anschließend werden diese Farben wieder auf RGB abgebildet, um die Farben im gesamten System festzulegen.

CIELAB wird manchmal auch als „L*a*b*“ bezeichnet. L* für wahrgenommene Helligkeit/Helligkeit und a* und b* für die vier einzigartigen Farben des menschlichen Sehens – Rot, Grün, Blau und Gelb. Aus der Helligkeit wird ein Kontrastverhältnis berechnet, das die Lesbarkeit gewährleistet. Nach der Anwendung erhalten Sie alle Ihre hübschen systemweiten Farben, die in die Benutzeroberfläche des Systems, Apps und mehr implementiert werden können.

Was ist mit Runtime Resource Overlays (RROs) passiert?

RROs sind nirgendwo verschwunden und Material You funktioniert über die Fabricated Overlays API. In der Vergangenheit haben wir darüber gesprochen wie Fabricated Overlays verwendet werden können, um Rootless-Theming wiederherzustellen. Fabricated Overlays sind eine neue Ergänzung zu Android 12 und funktionieren etwas anders als RROs. Zum einen RROs Arbeiten Sie über ein Overlay-APK, das auf einem Gerät installiert ist, während ein Fabricated Overlay einer App lediglich mitteilt, welche Farben verwendet werden sollen verwenden.

Auch fabrizierte Overlays sind etwas eingeschränkter als RROs. Vor Android 11 konnten RROs überschreiben so ziemlich jede Ressource: Boolesche Werte, Ganzzahlen, Dimensionen, Attribute, Layouts und sogar Rohwerte Datei. Android 11 hat einige Änderungen an der Funktionsweise von RROs vorgenommen, sodass das Überschreiben von Layouts nicht mehr wirklich möglich ist. Fabrizierte Overlays hingegen können nur Werte überschreiben, die als ganze Zahlen dargestellt werden können. Dazu gehören Ganzzahlen, Dimensionen, Boolesche Werte und Farben. Sie können sie nicht zum Überschreiben von Rohdatenressourcen, Layouts, Strings oder Arrays verwenden – zumindest nicht einfach.

Dennoch spielen diese Einschränkungen keine Rolle, wenn es um Material You und Monet geht. Mit vorgefertigten Overlays kann das System problemlos Farb- und Dimensionsüberlagerungen im Handumdrehen anwenden, ohne auf die Kompilierung einer APK oder einen Neustart des Systems warten zu müssen, um sie anzuwenden.

Material You verbessert sich immer noch

Die dynamischen Farben von Material You sind sicherlich nicht ohne Probleme, und es ist gar nicht so schwer, sie grundsätzlich zu durchbrechen. Wenn Sie zum Beispiel Ihr Hintergrundbild schnell ändern, ist das möglich effektiv einen Denial-of-Service-Angriff einleiten. Mischaal Rahman hat bestätigt dass dieser Denial-of-Service-Angriff in Android 12L behoben wurde. Ich hoffe aufrichtig, dass Material You in zukünftigen Versionen verbessert wird, denn obwohl ich es und sein Konzept liebe, erfordert es noch viel Arbeit. Aus meiner persönlichen Erfahrung habe ich das Gefühl, dass seine Fehlerhaftigkeit zum Teil der Grund dafür ist, dass es nicht zu AOSP hinzugefügt wurde... das und die Tatsache, dass Google es effektiv zu einem zeitgesteuerten Exklusivprodukt für die Pixel-Serie gemacht hat. Ich hatte kürzlich sogar ein Problem, nachdem ich auf meinem Google Pixel 7 auf den Dezember-Patch von Android 13 aktualisiert hatte Pro, bei dem ich später im Logcat herausgefunden habe, dass es von Material You und dem Google Pixel verursacht wurde Startprogramm.

Ärgerlicherweise, Android 12 hat benutzerdefinierte Schriftarten und benutzerdefinierte Symboloptionen entfernt zugunsten des dynamischen Themas von Material You. Das Theme-System wurde erstmals mit der Pixel Themes-App eingeführt und basierte auf dem Overlay-basierten Theme-Framework von Android. Das Material You-Designsystem von Android 12 ist zwar anpassbarer, verfügt jedoch nicht über die benutzerdefinierten Stile, die Google in Android 10 eingeführt hat. In einem Kommentar Im Google Issue Tracker begründete ein Google-Mitarbeiter die Entfernung wie folgt:

„Die benutzerdefinierten Stilfunktionen (Schriftart, Symbolform, Symbolpaket und Akzentfarbe) in R werden durch die neue dynamische Designfunktion ersetzt, die wir in S einführen. Wir halten die neue dynamische Themenfunktion für moderner und intelligenter. Eine einfache und angenehme Erfahrung, von der wir hoffen, dass sie alle Benutzer genießen können.“

Es ist unwahrscheinlich, dass Google in Zukunft wieder Schriftarten und benutzerdefinierte Symboloptionen einführen wird. Viele Nutzer haben ihre Enttäuschung über die Material You-Änderungen von Google zum Ausdruck gebracht, und wenn man bedenkt, wie kaputt es sein kann, verstehe ich vollkommen, warum. Wir hoffen, dass Google seine Implementierung verbessert, oder so Andere OEMs tappen nicht in die gleichen Fallen in ihren Implementierungen, die Google hat.

Änderungen in Android 13

Google hat Material You verbessert für die Veröffentlichung von Android 13und eine der ersten Verbesserungen war die Hinzufügung von fünf zusätzlichen Farbstilen. Diese neuen Farbstile heißen TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW und FRUIT_SALAD. Wir haben Screenshots gemacht und diese unten gezeigt.

  • TONAL_SPOT: Standardmaterial Ihrer Farben
  • LEBENDIG: Erzeugt eine tonalere Palette mit leicht variierenden Farbtönen und farbenfroheren Sekundär- und Hintergrundfarben
  • EXPRESSIV: Erzeugt eine Palette mit mehreren markanten Farbtönen, die farbenfroher sind als VIBRANT
  • SPRITZ: Erzeugt eine Palette mit niedrigeren Farben

Android 13 bietet Entwicklern außerdem die Möglichkeit, thematische App-Symbole zu verwenden, damit sie das Systemthema übernehmen können. Entwickler können dies unterstützen, indem sie in ihren Apps sowohl ein adaptives Symbol als auch ein monochromatisches App-Symbol bereitstellen. Der Launcher muss jedoch weiterhin thematische Symbole unterstützen, wie zum Beispiel der Google Pixel Launcher.


Vielen Dank an XDA Senior Member kdrag0n, Entwickler von ProtonAOSP und eine Nachbildung des Material You-Themensystems, für ihre Unterstützung in diesem Artikel!