Material You's monet-temamotor er det store høydepunktet i Android 12, og her er hvordan det fungerer

click fraud protection

Googles materiale Du er ikke så komplisert å forstå, selv om det ikke er mye informasjon på ett sted. Sjekk det ut her!

Hurtigkoblinger

  • Hvordan monet-temamotoren fungerer
  • Hva skjedde med Runtime Resource Overlays (RROer)?
  • Materiale Du forbedrer fortsatt
  • Endringer i Android 13

Den desidert største endringen i Android 12 er Materiale deg, den nyeste versjonen av Googles materialdesignspråk. Materiale Du, som Google beskriver, "søker å lage design som er personlig for enhver stil, tilgjengelig for ethvert behov, levende og tilpasningsdyktig for hver skjerm." Da Google utviklet Android 12, opprettet Google en ny temamotor med kodenavnet "monet" som genererer en rik palett av pastellfarger avledet fra brukerens bakgrunn. Disse fargene blir deretter brukt på ulike deler av systemet, og verdiene deres gjøres tilgjengelige gjennom en API som brukerens applikasjoner kan kalle, og dermed lar apper bestemme om de også vil fargelegge sine UI. Google har gått all-in på Material You, og selskapet har oppdatert de fleste appene sine for å inkludere dynamiske farger.

For et lynkurs om historien til Material Design ble det først lansert med Android 5 Lollipop, med et iboende fokus på brukeropplevelsen. Som Google sier det, "Material er et tilpasningsdyktig system med retningslinjer, komponenter og verktøy som støtter beste praksis for brukergrensesnittdesign." Den inneholdt flate, pastellfargepaletter, dybde, myk belysning og realistisk fysikk. Android 9 Pie så innkomsten av Material Design 2, selv om det ikke var på langt nær en så stor visuell overhaling som den første Material Design-iterasjonen var. Android 12 så lanseringen av Materialdesign 3, som er en mer betydelig overhaling.

Ta imidlertid bort fargetemamotoren, og Material You er faktisk ikke det at annerledes. Faktisk forsvinner det personlige elementet som er betegnet med "du" mer eller mindre helt.

Hvordan monet-temamotoren fungerer

"Monet"-temamotoren er der magien skjer når det kommer til Material You, og det er algoritmen som bestemmer hvilke farger som velges fra et bakgrunnsbilde. "Monet" ble lagt til AOSP i Android 12L. Tilpassede ROM-utviklere kan også implementere dette åpen kildekode-implementering av "monet". Tredjeparts apputviklere er gratis for å legge til støtte for dynamiske farger akkurat nå, selv om det bare vil fungere på et begrenset antall enheter for øyeblikket.

Det første spørsmålet jeg er sikker på at de fleste har om Material You er hvordan den klarer å velge farger som fungerer sammen og kontrasterer godt sammen hver eneste gang. Jeg har prøvd utallige bakgrunnsbilder med den hensikt å bryte fargeplukkingsalgoritmen, men ingen av dem har klart det. Den velger fortsatt farger som fungerer sammen hver gang, noe som er en imponerende bragd, for å si det mildt. For å få et innblikk i hvordan Android 12s fargevalgsalgoritme fungerer, kommer ett av de to påskeeggene i form av en widget som du kan legge til skrivebordet ditt. Widgeten viser alle fargene valgt av monet, og du kan trykke på den for å fullskjerme den. Når den er i fullskjerm, kan du trykke på en farge for å dele den. Når du deler det, ser utdataene slik ut:

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

Når en bruker endrer bakgrunnsbilde på en Android 12-enhet, analyseres bildet for å velge en farge og velg algoritmisk primær-, sekundær-, tertiær- og feilfarger ved å bruke et første frø farge. To nøytrale farger er også valgt som gir Material You dens helhetlige fargetone. Samtidig bruker den fargeteori og tilgjengelighetsregler. Fra disse fargene lager algoritmen tonepaletter som strekker seg fra 0 % luminans (SORT) til 100 % (HVIT). Dynamisk tema eller tilpasset tema bruker verdier i disse tonepalettene for å angi temaattributtene for det fargeområdet. Den trekker ut opptil 128 farger fra tapetet til CIELAB-fargerommet som mellomledd, så er disse fargene kartlagt til CAM16. CAM16 color enutseende model brukes til å sortere og filtrere fargene for å bestemme den faktiske frøfargen, og deretter genereres paletter med den frøfargen. Etterpå blir disse fargene kartlagt tilbake til RGB for å angi farger i hele systemet.

CIELAB blir noen ganger også referert til som "L*a*b*". L* for oppfattet lysstyrke/lyshet, og a* og b* for de fire unike fargene til menneskesyn - rød, grønn, blå og gul. Lysheten brukes til å beregne kontrastforhold, og garanterer lesbarhet. Når du først er påført, får du alle dine vakre systemomfattende farger som kan implementeres i systemets brukergrensesnitt, apper og mer.

Hva skjedde med Runtime Resource Overlays (RROer)?

RRO-er har ikke gått noe sted, og Material You fungerer gjennom Fabricated Overlays API. Tidligere har vi snakket om hvordan Fabricated Overlays kan brukes til å bringe tilbake rotløst tema. Fabricated Overlays er et nytt tillegg til Android 12, og de fungerer litt annerledes enn RRO-er. For det første, RROs arbeid gjennom en overleggs-APK installert på en enhet, mens et Fabricated Overlay ganske enkelt forteller en app hvilke farger den skal bruk.

Fabriserte overlegg er også litt mer begrenset enn RRO-er. Før Android 11 kunne RRO-er overstyre stort sett enhver ressurs: booleaner, heltall, dimensjoner, attributter, oppsett og til og med rå datafiler. Android 11 gjorde noen endringer i hvordan RRO-er fungerer, noe som gjorde at overordnede oppsett ikke lenger er mulige. Fabricated Overlays, derimot, kan bare overstyre verdier som kan representeres som heltall. Det inkluderer heltall, dimensjoner, booleaner og farger. Du kan ikke bruke dem til å overstyre rådataressurser, oppsett, strenger eller matriser - i hvert fall ikke lett.

Likevel, disse begrensningene spiller ingen rolle når det kommer til Material You og monet. Fabriserte overlegg gjør det enkelt for systemet å bruke farge- og dimensjonsoverlegg på flukt, uten å vente på at en APK skal kompileres eller at systemet starter på nytt for å bruke den.

Materiale Du forbedrer fortsatt

Material Yous dynamiske farger er absolutt ikke uten problemer, og det er ikke så vanskelig å bryte det fundamentalt. Hvis du for eksempel endrer bakgrunnsbilde raskt, kan du det effektivt sette i gang et tjenestenektangrep. Mishaal Rahman har bekreftet at dette tjenestenektangrepet ble løst i Android 12L. Jeg håper inderlig at Material You blir forbedret i fremtidige versjoner, for selv om jeg elsker det og konseptet, trenger det mye arbeid. Fra min egen personlige erfaring føler jeg at bugginess delvis er grunnen til at den ikke har blitt lagt til AOSP... det, og det faktum at Google effektivt gjorde det til en tidsbestemt eksklusiv for Pixel-serien. Jeg fikk til og med et problem nylig etter å ha oppdatert til Android 13s desemberoppdatering på Google Pixel 7 Pro, som jeg senere sporet opp i logcat for å være forårsaket av Material You og Google Pixel launcher.

Irriterende nok, Android 12 fjernet tilpassede fonter og tilpassede ikonvalg til fordel for Material Yous dynamiske tema. Temasystemet ble først introdusert med Pixel Themes-appen, og det var basert på Androids overleggsbaserte temarammeverk. Mens Android 12s Material You-temasystem er mer tilpassbart, har det ikke de tilpassede stilene Google introduserte i Android 10. I en kommentar på Google Issue Tracker ga en Googler følgende begrunnelse for fjerningen:

"De tilpassede stilfunksjonene (font, ikonform, ikonpakke og aksentfarge) i R blir erstattet av den nye dynamiske temafunksjonen som vi introduserer i S. Vi ser på den nye dynamiske temafunksjonen som mer moderne og intelligent. En enkel og herlig opplevelse som vi håper alle brukere kan få glede av."

Det virker usannsynlig at Google vil gjeninnføre fonter og tilpassede ikonvalg i fremtiden. Mange brukere har gitt uttrykk for sin skuffelse over Googles Material You-endringer, og gitt hvor ødelagt det kan være, forstår jeg helt hvorfor. Vi håper at Google forbedrer implementeringen, eller det andre OEM-er går ikke i de samme fellene i deres implementeringer som Google har.

Endringer i Android 13

Google forbedret Material You for utgivelsen av Android 13, og en av de første forbedringene var tillegget av fem ekstra fargestiler. Disse nye fargestilene heter TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW og FRUIT_SALAD. Vi har tatt skjermbilder og vist dem nedenfor.

  • TONAL_SPOT: Standard Material Du farger
  • VIBRANT: Genererer en mer tonal palett med litt varierende nyanser og mer fargerike sekundær- og bakgrunnsfarger
  • EKSPRESSIV: Genererer en palett med flere fremtredende nyanser som er mer fargerike enn VIBRANT
  • SPRITZ: Genererer en mer lav fargepalett

Android 13 introduserte også muligheten for utviklere til å ha tema-appikoner også, slik at de kan ta på seg systemtemaet. Utviklere kan støtte dette ved å gi både et adaptivt ikon og et monokromatisk appikon i appene sine. Starteren må imidlertid fortsatt støtte temaikoner, for eksempel Google Pixel-starteren.


Takk til XDA Senior Member kdrag0n, utvikler av både ProtonAOSP og en gjenskaping av Material You-temasystemet, for deres hjelp i denne artikkelen!