Material You's monet-temamotor är den stora höjdpunkten i Android 12, och så här fungerar det

Googles material Du är inte så komplicerat att förstå, även om det inte finns mycket information på ett ställe. Kolla in det här!

snabblänkar

  • Hur monet-temamotorn fungerar
  • Vad hände med Runtime Resource Overlays (RRO)?
  • Material Du förbättras fortfarande
  • Förändringar i Android 13

Den absolut största förändringen i Android 12 är Material du, den senaste versionen av Googles designspråk Material. Material Du, som Google beskriver, "strävar efter att skapa design som är personlig för varje stil, tillgänglig för alla behov, levande och anpassningsbar för varje skärm.När Google utvecklade Android 12 skapade Google en ny temamotor med kodnamnet "monet" som genererar en rik palett av pastellfärger härledd från användarens tapeter. Dessa färger appliceras sedan på olika delar av systemet och deras värden görs tillgängliga genom en API som användarens applikationer kan anropa, vilket låter appar bestämma om de också vill färga om sina UI. Google har gått all-in på Material You, och företaget har uppdaterat de flesta av sina appar för att införliva dynamiska färger.

För en snabbkurs om materialdesignens historia lanserades den först med Android 5 Lollipop, med ett inneboende fokus på användarupplevelsen. Som Google uttrycker det, "Material är ett anpassningsbart system av riktlinjer, komponenter och verktyg som stödjer bästa praxis för användargränssnittsdesign." Den innehöll platta, pastellfärgade färgpaletter, djup, mjuk belysning och realistisk fysik. Android 9 Pie såg tillkomsten av Material Design 2, även om det inte var i närheten av en så stor visuell översyn som den första Material Design-iterationen var. Android 12 lanserades Materialdesign 3, vilket är en mer betydande översyn.

Men ta bort färgtemamotorn, och Material You är faktiskt inte det den där annorlunda. Faktum är att det personliga elementet som betecknas med "du" försvinner mer eller mindre helt.

Hur monet-temamotorn fungerar

Temamotorn "monet" är där magin händer när det kommer till Material You, och det är algoritmen som avgör vilka färger som väljs från en tapet. "Monet" lades till i AOSP i Android 12L. Anpassade ROM-utvecklare kan också implementera detta öppen källkod implementering av "monet". Tredjepartsapputvecklare är gratis för att lägga till stöd för dynamiska färger just nu, även om det bara kommer att fungera på ett begränsat antal enheter för närvarande.

Den första frågan jag är säker på att de flesta har om Material You är hur det lyckas välja färger som fungerar tillsammans och kontrasterar bra tillsammans varje gång. Jag har provat otaliga tapeter med avsikten att bryta färgvalsalgoritmen, men ingen av dem har lyckats göra det. Den väljer fortfarande färger som fungerar tillsammans varje gång, vilket är en minst sagt imponerande bedrift. För att få en inblick i hur Android 12:s färgvalsalgoritm fungerar kommer ett av de två påskäggen i form av en widget som du kan lägga till på ditt skrivbord. Widgeten visar alla färger som valts av monet, och du kan trycka på den för att visa den i helskärm. När den är i helskärm kan du trycka på en färg för att dela den. När du delar den ser utdata ut så här:

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

När en användare ändrar sin bakgrundsbild på en Android 12-enhet analyseras bilden för att välja en färg och välj algoritmiskt primära, sekundära, tertiära och felfärger med ett initialt frö Färg. Två neutrala färger är också valda som ger Material You dess övergripande nyans. Samtidigt tillämpar den färglära och tillgänglighetsregler. Från dessa färger skapar algoritmen tonala paletter som sträcker sig från 0 % luminans (SVART) till 100 % (VIT). Dynamiskt tema eller anpassat tema använder värden i dessa tonala paletter för att ställa in temaattribut för det färgintervallet. Den extraherar upp till 128 färger från tapeten till CIELAB-färgrymden som en mellanhand, sedan är dessa färger mappad till CAM16. CAM16 color autseende model används för att sortera och filtrera färgerna för att bestämma den faktiska fröfärgen, och sedan genereras paletter med den fröfärgen. Efteråt mappas dessa färger tillbaka till RGB för att ställa in färger i hela systemet.

CIELAB kallas ibland också för "L*a*b*". L* för upplevd ljusstyrka/ljushet, och a* och b* för de fyra unika färgerna för mänskligt syn - rött, grönt, blått och gult. Ljusstyrkan används för att beräkna ett kontrastförhållande, vilket garanterar läsbarhet. När du väl applicerat får du alla dina vackra systemomfattande färger som kan implementeras i systemets användargränssnitt, appar och mer.

Vad hände med Runtime Resource Overlays (RRO)?

RRO: er har inte tagit vägen någonstans, och Material You fungerar via Fabricated Overlays API. Tidigare har vi pratat om hur Fabricated Overlays kan användas för att få tillbaka rotlösa teman. Fabricated Overlays är ett nytt tillägg till Android 12, och de fungerar något annorlunda än RRO: er. För en, RROs arbeta genom en överlagrings-APK installerad på en enhet, medan en tillverkad överlagring helt enkelt talar om för en app vilka färger den ska använda sig av.

Tillverkade överlägg är också lite mer begränsade än RRO. Före Android 11 kunde RRO: er åsidosätt i stort sett alla resurser: booleaner, heltal, dimensioner, attribut, layouter och till och med rå data filer. Android 11 gjorde några ändringar i hur RRO: er fungerar, vilket gör att överordnade layouter inte riktigt är genomförbara längre. Tillverkade överlägg, å andra sidan, kan bara åsidosätta värden som kan representeras som heltal. Det inkluderar heltal, dimensioner, booleaner och färger. Du kan inte använda dem för att åsidosätta rådataresurser, layouter, strängar eller arrayer - åtminstone inte lätt.

Ändå spelar dessa begränsningar egentligen ingen roll när det kommer till Material You och monet. Tillverkade överlägg gör det enkelt för systemet att applicera färg- och dimensionsöverlägg i farten, utan att vänta på att en APK ska kompileras eller att systemet startar om för att tillämpa den.

Material Du förbättras fortfarande

Material Yous dynamiska färger är verkligen inte utan problem, och det är inte så svårt att bryta det i grunden. Om du till exempel byter tapet snabbt kan du göra det effektivt inleda en överbelastningsattack. Mishaal Rahman har bekräftat att denna överbelastningsattack fixades i Android 12L. Jag hoppas verkligen att Material You förbättras i framtida versioner, eftersom jag älskar det och dess koncept, men det kräver mycket arbete. Av min egen personliga erfarenhet känner jag att dess bugginess delvis är varför den inte har lagts till i AOSP... det, och det faktum att Google faktiskt gjorde det till en tidsinställd exklusiv för Pixel-serien. Jag stötte till och med på ett problem nyligen efter att ha uppdaterat till Android 13s decemberpatch på min Google Pixel 7 Pro, som jag senare spårade upp i logcat för att vara orsakad av Material You och Google Pixel launcher.

Irriterande, Android 12 tog bort anpassade teckensnitt och anpassade ikonval till förmån för Material Yous dynamiska tema. Temasystemet introducerades först med Pixel Themes-appen, och det baserades på Androids överlagringsbaserade temaramverk. Även om Android 12:s Material You-temasystem är mer anpassningsbart, innehåller det inte de anpassade stilar som Google introducerade i Android 10. I en kommentar på Google Issue Tracker angav en Googler följande resonemang för borttagningen:

"De anpassade stilfunktionerna (typsnitt, ikonform, ikonpaket och accentfärg) i R ersätts av den nya dynamiska temafunktionen som vi introducerar i S. Vi ser den nya dynamiska temafunktionen som mer modern och intelligent. En enkel och härlig upplevelse som vi hoppas att alla användare kan få njuta av.”

Det verkar osannolikt att Google kommer att återinföra typsnitt och anpassade ikonval i framtiden. Många användare har uttryckt sin besvikelse över Googles Material You-ändringar, och med tanke på hur trasigt det kan vara förstår jag helt varför. Vi hoppas att Google förbättrar sin implementering, eller så andra OEM-tillverkare faller inte i samma fällor i sina implementeringar som Google har.

Förändringar i Android 13

Google förbättrade Material You för utgivningen av Android 13, och en av de första förbättringarna var tillägget av fem extra färgstilar. Dessa nya färgstilar heter TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW och FRUIT_SALAD. Vi har tagit skärmdumpar och visat dem nedan.

  • TONAL_SPOT: Standardmaterial Du färger
  • VIBRANT: Genererar en mer tonal palett med något varierande nyanser och mer färgglada sekundära och bakgrundsfärger
  • EXPRESSIVT: Genererar en palett med flera framträdande nyanser som är mer färgglada än VIBRANT
  • SPRITZ: Genererar en mer lågfärgad palett

Android 13 introducerade också möjligheten för utvecklare att också ha appikoner med tema, så att de kan ta sig an systemtemat. Utvecklare kan stödja detta genom att tillhandahålla både en adaptiv ikon och en monokromatisk appikon i sina appar. Launchern behöver fortfarande stödja temaikoner, till exempel Google Pixel launcher.


Tack till XDA Senior Member kdrag0n, utvecklare av både ProtonAOSP och en återskapande av temasystemet Material You, för deras hjälp i den här artikeln!