Google's Material You is niet zo ingewikkeld om te begrijpen, ook al staat er niet veel informatie op één plek. Bekijk het hier!
Snelle koppelingen
- Hoe de monet-thema-engine werkt
- Wat is er gebeurd met Runtime Resource Overlays (RRO's)?
- Materiaal Jij verbetert nog steeds
- Veranderingen in Android 13
Veruit de grootste verandering in Androïde 12 is Materiaal Jij, de nieuwste versie van de Material-ontwerptaal van Google. Materiaal Jij, zoals Google beschrijft: “streeft ernaar ontwerpen te creëren die persoonlijk zijn voor elke stijl, toegankelijk voor elke behoefte, levend en aanpasbaar voor elk scherm.Bij de ontwikkeling van Android 12 heeft Google een nieuwe thema-engine gemaakt met de codenaam 'monet' die een rijk palet aan pastelkleuren genereert afgeleid van de achtergrond van de gebruiker. Deze kleuren worden vervolgens toegepast op verschillende delen van het systeem en hun waarden worden beschikbaar gesteld via een API die de applicaties van de gebruiker kunnen aanroepen, waardoor apps kunnen beslissen of ze ook hun kleur willen veranderen gebruikersinterface. Google heeft zich volledig ingezet voor Material You en het bedrijf heeft de meeste van zijn apps bijgewerkt met dynamische kleuren.
Voor een spoedcursus over de geschiedenis van Material Design werd het voor het eerst gelanceerd met Android 5 Lollipop, met een inherente focus op de gebruikerservaring. Als Google stelt het, "Materiaal is een aanpasbaar systeem van richtlijnen, componenten en hulpmiddelen die de beste praktijken van gebruikersinterfaceontwerp." Het bevatte platte pastelkleurenpaletten, diepte, zachte verlichting en realistisch natuurkunde. Android 9 Pie zag de komst van Material Design 2, hoewel het lang niet zo'n grote visuele revisie was als de eerste Material Design-iteratie. Android 12 zag de lancering van Materiaalontwerp 3, wat een ingrijpendere herziening is.
Haal echter de kleurthema-engine weg, en Material You is dat eigenlijk niet Dat verschillend. In feite verdwijnt het persoonlijke element dat wordt aangeduid met 'jij' min of meer volledig.
Hoe de monet-thema-engine werkt
De 'monet'-thema-engine is waar de magie gebeurt als het om Material You gaat, en het is het algoritme dat beslist welke kleuren uit een achtergrond worden geselecteerd. “Monet” is toegevoegd aan AOSP in Android 12L. Custom ROM-ontwikkelaars kunnen dit ook implementeren open-source implementatie van “monet”. App-ontwikkelaars van derden zijn gratis om ondersteuning voor dynamische kleuren toe te voegen op dit moment, ook al werkt het momenteel slechts op een beperkt aantal apparaten.
De eerste vraag die de meeste mensen ongetwijfeld hebben over Material You is hoe het erin slaagt om kleuren te selecteren die bij elkaar passen en elke keer weer goed contrasteren. Ik heb talloze achtergronden geprobeerd met de bedoeling het algoritme voor het kiezen van kleuren te doorbreken, maar geen van hen is erin geslaagd dit te doen. Het kiest nog steeds kleuren die elke keer samenwerken, wat op zijn zachtst gezegd een indrukwekkende prestatie is. Om inzicht te krijgen in hoe het kleurkeuze-algoritme van Android 12 werkt, komt een van de twee paaseieren in de vorm van een widget die je aan je bureaublad kunt toevoegen. De widget toont alle kleuren die door Monet zijn geselecteerd en u kunt erop tikken om deze op volledig scherm weer te geven. Wanneer het op volledig scherm wordt weergegeven, kunt u op een kleur tikken om deze te delen. Wanneer u het deelt, ziet de uitvoer er als volgt uit:
A1-600 (@android:color/system_accent1_600)
currently: #626200
Wanneer een gebruiker de achtergrond op een Android 12-apparaat wijzigt, wordt de afbeelding geanalyseerd om een kleur te selecteren en kies algoritmisch Primaire, Secundaire, Tertiaire en Foutkleuren met behulp van een initiële kiem kleur. Er is ook gekozen voor twee neutrale kleuren die Material You zijn algemene tint geven. Tegelijkertijd past het kleurentheorie en toegankelijkheidsregels toe. Van deze kleuren creëert het algoritme toonpaletten variërend van 0% luminantie (ZWART) tot 100% (WIT). Dynamische thema's of aangepaste thema's gebruiken waarden in deze toonpaletten om de themakenmerken voor dat kleurbereik in te stellen. Het haalt maximaal 128 kleuren uit het behang naar de CIELAB-kleurruimte als tussenpersoon, waarna deze kleuren worden toegewezen aan CAM16. De CAM16 Ckleur Auiterlijk Model wordt gebruikt voor het sorteren en filteren van de kleuren om de werkelijke zaadkleur te bepalen, en vervolgens worden paletten gegenereerd met behulp van die zaadkleur. Daarna worden die kleuren terug toegewezen aan RGB om de kleuren in het hele systeem in te stellen.
CIELAB wordt soms ook wel "L*a*b*" genoemd. L* voor waargenomen helderheid/lichtheid, en a* en b* voor de vier unieke kleuren van het menselijk zicht: rood, groen, blauw en geel. De lichtheid wordt gebruikt voor het berekenen van een contrastverhouding, waardoor de leesbaarheid wordt gegarandeerd. Eenmaal toegepast, krijgt u al uw mooie systeembrede kleuren die kunnen worden geïmplementeerd in de systeemgebruikersinterface, apps en meer.
Wat is er gebeurd met Runtime Resource Overlays (RRO's)?
RRO's zijn nergens heen gegaan en Material You werkt via de Fabricated Overlays API. In het verleden hebben we het erover gehad hoe Fabricated Overlays kunnen worden gebruikt om wortelloze thema's terug te brengen. Gefabriceerde overlays zijn een nieuwe toevoeging aan Android 12 en werken iets anders dan RRO's. Ten eerste: RRO's werk via een overlay-APK die op een apparaat is geïnstalleerd, terwijl een gefabriceerde overlay een app eenvoudig vertelt welke kleuren moeten worden gebruikt gebruik.
Gefabriceerde overlays zijn ook iets beperkter dan RRO's. Vóór Android 11 konden RRO's dat wel overschrijf vrijwel elke bron: booleans, gehele getallen, dimensies, attributen, lay-outs en zelfs onbewerkt gegevensbestanden. Android 11 heeft enkele wijzigingen aangebracht in de manier waarop RRO’s werken, waardoor overschrijvende lay-outs niet echt meer haalbaar zijn. Gefabriceerde overlays kunnen daarentegen alleen waarden overschrijven die als gehele getallen kunnen worden weergegeven. Dat omvat gehele getallen, dimensies, booleans en kleuren. Je kunt ze niet gebruiken om ruwe gegevensbronnen, lay-outs, tekenreeksen of arrays te overschrijven – althans niet gemakkelijk.
Toch doen deze beperkingen er niet echt toe als het gaat om Material You en monet. Dankzij gefabriceerde overlays kan het systeem gemakkelijk kleur- en dimensie-overlays direct toepassen, zonder te hoeven wachten tot een APK is gecompileerd of het systeem opnieuw moet opstarten om deze toe te passen.
Materiaal Jij verbetert nog steeds
Materiaal De dynamische kleuren van You zijn zeker niet zonder problemen, en het is niet zo moeilijk om deze fundamenteel te doorbreken. Als u bijvoorbeeld snel uw achtergrond wijzigt, kan dat effectief een denial-of-service-aanval uitvoeren. Mishaal Rahman heeft bevestigd dat deze denial of service-aanval is opgelost in Android 12L. Ik hoop oprecht dat Material You in toekomstige versies wordt verbeterd, want hoewel ik het geweldig vind en het concept ervan, vergt het nog veel werk. Uit mijn eigen persoonlijke ervaring ben ik van mening dat de gebrekkigheid ervan gedeeltelijk de reden is dat het niet aan AOSP is toegevoegd... dat, en het feit dat Google er in feite een getimede exclusief voor de Pixel-serie van heeft gemaakt. Ik kwam onlangs zelfs een probleem tegen na het updaten naar de decemberpatch van Android 13 op mijn Google Pixel 7 Pro, waarvan ik later in de logcat heb opgespoord dat het werd veroorzaakt door Material You en de Google Pixel draagraket.
Vervelend, Android 12 heeft het aangepaste lettertype en de aangepaste pictogramkeuzes verwijderd ten gunste van het dynamische thema van Material You. Het themasysteem werd voor het eerst geïntroduceerd met de Pixel Themes-app en was gebaseerd op het op overlays gebaseerde themaframework van Android. Hoewel het Material You-themasysteem van Android 12 beter aanpasbaar is, bevat het niet de aangepaste stijlen die Google in Android 10 heeft geïntroduceerd. In een opmerking op de Google Issue Tracker gaf een Googler de volgende reden voor de verwijdering ervan:
“De aangepaste stijlfuncties (lettertype, pictogramvorm, pictogrampakket en accentkleur) in R worden vervangen door de nieuwe dynamische themafunctie die we introduceren in S. We beschouwen de nieuwe dynamische themafunctie als moderner en intelligenter. Een eenvoudige en heerlijke ervaring waarvan we hopen dat alle gebruikers ervan kunnen genieten.”
Het lijkt onwaarschijnlijk dat Google in de toekomst lettertypen en aangepaste pictogramkeuzes opnieuw zal introduceren. Veel gebruikers hebben hun teleurstelling geuit over de wijzigingen in Material You van Google, en gezien hoe kapot het kan zijn, begrijp ik volledig waarom. We hebben goede hoop dat Google de implementatie ervan verbetert, of dat andere OEM's trappen niet in dezelfde valkuilen in hun implementaties die Google heeft.
Veranderingen in Android 13
Google heeft Material You verbeterd voor de vrijlating van Androïde 13, en een van de eerste verbeteringen was de toevoeging van vijf extra kleurstijlen. Deze nieuwe kleurstijlen heten TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW en FRUIT_SALAD. We hebben screenshots gemaakt en deze hieronder weergegeven.
- TONAL_SPOT: Standaardmateriaal dat u kleurt
- LEVENDIG: Genereert een meer tonaal palet met enigszins variërende tinten en kleurrijkere secundaire en achtergrondkleuren
- EXPRESSIEF: Genereert een palet met meerdere prominente tinten die kleurrijker dan LEVENDIG zijn
- SPRITZ: Genereert een palet met minder kleuren
Android 13 introduceerde ook de mogelijkheid voor ontwikkelaars om app-pictogrammen met een thema te hebben, zodat ze het systeemthema kunnen overnemen. Ontwikkelaars kunnen dit ondersteunen door zowel een adaptief pictogram als een monochromatisch app-pictogram in hun apps aan te bieden. Het opstartprogramma moet echter nog steeds themapictogrammen ondersteunen, zoals het Google Pixel-opstartprogramma.
Met dank aan XDA Senior-lid kdrag0n, ontwikkelaar van zowel ProtonAOSP als een recreatie van het Material You-themasysteem, voor hun hulp bij dit artikel!