Googles materiale Du er ikke så kompliceret at forstå, selvom der ikke er meget information på ét sted. Tjek det ud her!
hurtige links
- Hvordan monet-temamotoren fungerer
- Hvad skete der med Runtime Resource Overlays (RRO'er)?
- Materiale Du er stadig i forbedring
- Ændringer i Android 13
Langt den største ændring i Android 12 er Materiale dig, den seneste version af Googles Materiale-designsprog. Materiale Du, som Google beskriver, "søger at skabe design, der er personligt til enhver stil, tilgængeligt for ethvert behov, levende og tilpasset til enhver skærm." Da Google udviklede Android 12, skabte Google en ny temamotor med kodenavnet "monet", der genererer en rig palette af pastelfarver stammer fra brugerens tapet. Disse farver påføres derefter forskellige dele af systemet, og deres værdier gøres tilgængelige gennem en API, som brugerens applikationer kan kalde, og dermed lader apps bestemme, om de også vil omfarve deres UI. Google er gået all-in på Material You, og virksomheden har opdateret de fleste af sine apps til at inkorporere dynamiske farver.
Til et lynkursus om Material Designs historie blev det først lanceret med Android 5 Lollipop, med et iboende fokus på brugeroplevelsen. Som Google siger det, "Materiale er et tilpasningsdygtigt system af retningslinjer, komponenter og værktøjer, der understøtter bedste praksis for brugergrænsefladedesign." Det indeholdt flade pastelfarvepaletter, dybde, blød belysning og realistisk fysik. Android 9 Pie så fremkomsten af Material Design 2, selvom det ikke var nær så stor en visuel overhaling, som den første Material Design-iteration var. Android 12 så lanceringen af Materialedesign 3, hvilket er en mere markant overhaling.
Tag dog farvetemamotoren væk, og Material You er faktisk ikke at forskellige. Faktisk forsvinder det personlige element, der betegnes med "Du", mere eller mindre helt.
Hvordan monet-temamotoren fungerer
"Monet"-temamotoren er der, hvor magien sker, når det kommer til Material You, og det er algoritmen, der bestemmer, hvilke farver der vælges fra et tapet. "Monet" blev tilføjet til AOSP i Android 12L. Brugerdefinerede ROM-udviklere kan også implementere dette open source implementering af "monet". Tredjeparts app-udviklere er gratis for at tilføje understøttelse af dynamiske farver lige nu, selvom det kun vil fungere på et begrænset antal enheder i øjeblikket.
Det første spørgsmål, jeg er sikker på, at de fleste har om Material You, er, hvordan det formår at vælge farver, der fungerer sammen og står godt i kontrast hver eneste gang. Jeg har prøvet utallige tapeter med den hensigt at bryde farvevalgsalgoritmen, men ingen af dem har formået at gøre det. Den vælger stadig farver, der arbejder sammen hver gang, hvilket mildest talt er en imponerende bedrift. For at få et indblik i, hvordan Android 12s farvevalgsalgoritme fungerer, kommer et af de to påskeæg i form af en widget, som du kan tilføje til dit skrivebord. Widgetten viser alle farverne valgt af monet, og du kan trykke på den for at fuldskærme den. Når den er i fuld skærm, kan du trykke på en farve for at dele den. Når du deler det, ser outputtet sådan ud:
A1-600 (@android:color/system_accent1_600)
currently: #626200
Når en bruger ændrer deres tapet på en Android 12-enhed, analyseres billedet for at vælge en farve og vælg algoritmisk primære, sekundære, tertiære og fejlfarver ved hjælp af en indledende frø farve. Der er også valgt to neutrale farver, som giver Material You dens overordnede nuance. Samtidig anvender den farveteori og tilgængelighedsregler. Ud fra disse farver skaber algoritmen tonale paletter, der spænder fra 0 % luminans (SORT) til 100 % (HVID). Dynamisk tema eller brugerdefineret tema bruger værdier i disse tonale paletter til at indstille temaegenskaberne for det farveområde. Den udtrækker op til 128 farver fra tapetet til CIELAB-farverummet som mellemled, så er disse farver kortlagt til CAM16. CAM16 color -enudseende model bruges til at sortere og filtrere farverne for at bestemme den faktiske frøfarve, og derefter genereres paletter ved hjælp af den frøfarve. Bagefter kortlægges disse farver tilbage til RGB for indstilling af farver i hele systemet.
CIELAB omtales nogle gange også som "L*a*b*". L* for opfattet lysstyrke/lysstyrke, og a* og b* for de fire unikke farver i menneskesyn - rød, grøn, blå og gul. Letheden bruges til at beregne et kontrastforhold, hvilket garanterer læsbarhed. Når det er påført, får du alle dine smukke systemomfattende farver, der kan implementeres i systemets brugergrænseflade, apps og mere.
Hvad skete der med Runtime Resource Overlays (RRO'er)?
RRO'er er ikke gået nogen vegne, og Material You arbejder gennem Fabricated Overlays API. Tidligere har vi talt om hvordan Fabricated Overlays kan bruges til at bringe rodløst tema tilbage. Fabricated Overlays er en ny tilføjelse til Android 12, og de fungerer lidt anderledes end RRO'er. For det første RRO'er arbejde gennem en overlejrings-APK installeret på en enhed, hvorimod en fremstillet overlejring blot fortæller en app, hvilke farver den skal brug.
Fabricerede Overlays er også en lille smule mere begrænsede end RRO'er. Før Android 11 kunne RRO'er tilsidesætte stort set enhver ressource: booleans, heltal, dimensioner, attributter, layouts og endda rå datafiler. Android 11 foretog nogle ændringer i, hvordan RRO'er fungerer, hvilket gjorde tilsidesættende layouts ikke rigtig gennemførlige længere. Fabricerede overlejringer kan på den anden side kun tilsidesætte værdier, der kan repræsenteres som heltal. Det inkluderer heltal, dimensioner, booleaner og farver. Du kan ikke bruge dem til at tilsidesætte rådataressourcer, layouts, strenge eller arrays - i hvert fald ikke let.
Alligevel betyder disse begrænsninger ikke rigtig noget, når det kommer til Materiale dig og penge. Fremstillede overlejringer gør det nemt for systemet at anvende farve- og dimensionsoverlejringer på farten uden at vente på, at en APK-fil kompileres, eller at systemet genstarter for at anvende den.
Materiale Du er stadig i forbedring
Materiale Yous dynamiske farver er bestemt ikke uden problemer, og det er ikke så svært at bryde det grundlæggende. Hvis du for eksempel ændrer dit tapet hurtigt, kan du det effektivt indlede et lammelsesangreb. Mishaal Rahman har bekræftet at dette lammelsesangreb blev rettet i Android 12L. Jeg håber inderligt, at Material You bliver forbedret i fremtidige versioner, da jeg elsker det og dets koncept, men det kræver meget arbejde. Fra min egen personlige erfaring føler jeg, at dens bugginess delvist er grunden til, at den ikke er blevet tilføjet til AOSP... det, og det faktum, at Google reelt gjorde det til en tidsindstillet eksklusivitet til Pixel-serien. Jeg stødte endda på et problem for nylig efter opdatering til Android 13's december-patch på min Google Pixel 7 Pro, som jeg senere opsporede i logcat'en for at være forårsaget af Material You og Google Pixel løfteraket.
Irriterende, Android 12 fjernede tilpasset skrifttype og brugerdefinerede ikonvalg til fordel for Material Yous dynamiske tematik. Temasystemet blev først introduceret med Pixel Themes-appen, og det var baseret på Androids overlejringsbaserede temaramme. Mens Android 12s Material You-temasystem er mere tilpasseligt, indeholder det ikke de tilpassede stilarter, som Google introducerede i Android 10. I en kommentar på Google Issue Tracker gav en Googler følgende begrundelse for sin fjernelse:
"De brugerdefinerede stilfunktioner (skrifttype, ikonform, ikonpakke og accentfarve) i R erstattes af den nye dynamiske temafunktion, som vi introducerer i S. Vi ser den nye dynamiske temafunktion som mere moderne og intelligent. En enkel og dejlig oplevelse, som vi håber, at alle brugere kan få glæde af."
Det virker usandsynligt, at Google vil genintroducere skrifttyper og tilpassede ikonvalg i fremtiden. Mange brugere har udtrykt deres skuffelse over Googles Materiale Du-ændringer, og i betragtning af hvor ødelagt det kan være, forstår jeg fuldstændig hvorfor. Vi håber, at Google forbedrer sin implementering, eller sådan noget andre OEM'er falder ikke i de samme fælder i deres implementeringer, som Google har.
Ændringer i Android 13
Google forbedrede Material You til frigivelse af Android 13, og en af de første forbedringer var tilføjelsen af fem ekstra farvestile. Disse nye farvestile hedder TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW og FRUIT_SALAD. Vi har taget screenshots og vist dem nedenfor.
- TONAL_SPOT: Standardmateriale Du farver
- VIBRANT: Genererer en mere tonal palet med lidt varierende nuancer og mere farverige sekundære og baggrundsfarver
- EKSPRESSIV: Genererer en palet med flere fremtrædende nuancer, der er mere farverige end VIBRANT
- SPRITZ: Genererer en mere lavfarvet palet
Android 13 introducerede også muligheden for, at udviklere også kan have tema-appikoner, så de kan tage på sig systemtemaet. Udviklere kan understøtte dette ved at levere både et adaptivt ikon og et monokromatisk app-ikon i deres apps. Launcheren skal dog stadig understøtte temaikoner, såsom Google Pixel launcher.
Tak til XDA Senior Member kdrag0n, udvikler af både ProtonAOSP og en genskabelse af Material You-temasystemet, for deres hjælp i denne artikel!