pildiallikas

Androidi värvihaldus: mida peavad arendajad ja disainerid teadma

Hiljutises Oreo väljaandes sai Android värvihalduse jaoks esmase toe - see aitab seadme värvide väljundit sobitada. Selle värskendusega saavad Androidi seadmed nüüd värve kuvada väljaspool sRGB värvivahemikku. Kui te pole kursis värviprofiilide või laia värvigammaga, siis soovitan tungivalt seda Google I / O videot värvi mõistmiseks:

tl; dw; värvihaldus tagab, et värvid näevad erinevatel ekraanidel ühesugused. Näiteks võib värv # ff0000 (puhas punane nende jaoks, mis ei loe kuuekoodilisi koode) olenevalt ekraanil kuvatavast tehnoloogiast erinevalt - mõned ekraanid on võimelised kuvama küllastunud või intensiivseid värve kui teised. Öeldes sRGB-s # ff0000, määratakse konkreetne punane varjund (sRGB värviruumis), nii et värvihaldusega kuvarid võivad anda täpselt soovitud värvi.

Selles postituses tahaksin visandada, mida Androidi rakenduste kujundajad ja arendajad peavad nende muudatuste kohta teadma.

Laia värvigammaga piltide kuvamine

Pildid saavad manustada värviprofiili, kuulutades värviteate värviruumi. Sarnaselt on paljud kaamerad võimelised jäädvustama laias värvivalikus ja manustama sobivat värviprofiili. See võimaldab neil värve kuvada tavapärasest sRGB ulatusest kaugemal. Laia värviprofiiliga piltide kuvamiseks oma rakenduses peate olema sisse lülitatud tegevuste kaupa. Selleks määrake atribuut colorMode rakenduse manifesti tegevuse deklaratsioonis:

Saate selle ka programmiliselt seadistada, kuid enne aken loomist peate seda tegema onCreate'i ajal. Lai värvitoonide tugi on opt-in, kuna see nõuab rohkem süsteemiressursse (mis võib põhjustada teie rakenduse toimivuse languse):

„Kui laias värvivalikus režiim on lubatud, kasutab tegevuse aken ekraani kompositsiooniks rohkem mälu ja GPU-töötlust. Enne laia värvigamma režiimi lubamist peaksite hoolikalt kaaluma, kas tegevusest on sellest tõesti kasu. Näiteks tegevus, mis kuvab fotosid täisekraanil, on hea kandidaat laia värvigamma režiimis, kuid tegevus, mis näitab väikeseid pisipilte, ei ole. ”- arendaja dokumentatsioon

Pange tähele, et kui kasutate ühte tegevuste arhitektuuri, võib olla mõistlik laialdane värvitoonide pilt kuvada uueks tegevuseks.

Siin on näide, mis näitab kahte tegevust, mis näitavad sama laia värvigamma testi pilti (PNG, millele on manustatud värviprofiil Display P3). Ülemine tegevus kuulutab laia värvigamma värvirežiimi, alumine seda mitte.

Tegevused, kus kuvatakse laia värvigamma sisu, peavad valima laia värvirežiimi (ülemine)

Värvitäpne renderdamine

Paljudel Androidi seadmetel on olnud ekraanid, mis suudavad mõnda aega kuvada laiemat värviulatust. Enne Android 8.0 värvihaldust eeldati, et kogu sisu on sRGB, kuid laiad värvilised ekraanid tõlgendavad värviväärtused ümber nende ampluaa ja muudavad värvid efektiivseks. See muudab punased punasemaks, rohelised roheliseks jne, mis annab küllastunud välimuse. See venitamine on aga ebatäpne ja venitusefekti ei ole kuidagi võimalik arvutada, seetõttu pole renderdatud värvid täpsed.

Selle venituse kompenseerimiseks on paljud rakendused oma vara desatureerinud. Selle tagajärjel võivad värvid kalibreeritud ekraaniga seadmetes olla summutatud. See on värvitäpses seadmes, näiteks Pixel 2, desatureerunud varad vähem erksad kui ebatäpsetel ekraanidel. Kui värvitäpne renderdamine on levinud, saavad rakenduste koostajad peatada varade muutmise ja olla kindlad, et nende sisu kuvatakse ettenähtud viisil. Kuni selle ajani võite siiski võtta mõned toimingud, et tagada teie sisu hea väljanägemine nii värvitäpsetes ekraanides kui ka värviga hallatamata seadmetes.

Android 8.0 lisab uue lairiba ressursikvalifikaatori, mida saate kasutada värvide muutmiseks seadmetes, mille ekraanil on lai värvigamma ja laia värvigamma renderdamine on toetatud (ka tagurpidi).

Pange tähele, et laia värvigamma tugi erineb sellest, kas praegune tegevus töötab värvirežiimis wideColorGamut. See on see täpsustus, kui seade toetab värvide täpset renderdamist, sõltumata sellest, kas tegevus töötab laias värvirežiimis.

Näiteks võib rakendus deklareerida värvide põhipaleti res / väärtused / värvid.xml:


 # 5bc3cc 
 # 302c54 
 # c7416b 
 # e37b5b 
 # ffd64f 

… Ja alternatiivne komplekt res / väärtused-widecg / colours.xml:


 # 36c1cd 
 # 251f55 
 # c8144e 
 # e4572e 
 # ffc914 
Esitage erinevad värvid, mida saab kasutada täpsetes (vasakul) ja vanemates seadmetes

Saate sama tehnikat kasutada ka rastervaradega (nt res / Drawing-widecg-mdpi / foo.png), kuid see nõuab kopeerivate varade lähetamist, nii et teie rakenduse suuruse suurendamine ei pruugi olla väärt kompromissi. Kaaluge liikumist vektorvaradele, mida saab dünaamiliselt värvida.

Laiema toetuse tulek

Ehkki teatasime hiljuti plaanist lisada uus küllastunud värvirežiim, võimaldades kasutajatel valida värvide täpsest renderdamisest loobumine (st käituda nagu nowidecg-seadmed), usun siiski, et on oluline värskendada oma rakendusi värvihaldusega maailma jaoks. Kui värskendate oma rakendusi, et paremini toetada värvitäpsust, muudab vähem kasutajaid vajalikuks sellest režiimist loobuda. Plaanime jätkata investeerimist laiekraanide toele; lisades rohkem API pinda, et töötada tulevastes väljalasketes laia värvigammaga (näiteks värskendatud Paint ja Canvas API-d, mis aktsepteerivad värve suurema bititäpsusega).

Kaasaegsete väljapanekute reaalsus on see, et nüüd peavad disainerid ja arendajad mõistma värvihaldust ja seda, kuidas seda oma rakenduses rakendada. Kuna üha rohkem seadmeid tarnitakse laiusekraaniga ekraanide ja värvitäpse renderdusega, on oluline parimate kogemuste saamiseks liikuda lainele ja värskendada oma rakendusi. Peame seda parimaks viisiks pakkuda oma kasutajatele suurepäraseid kogemusi, kus teie nähtavad värvid on need, mida soovite.

Seotud lugemine

  • Suurepärane värvihalduse praimer
  • Lai värvisisu juhend
  • Androidi ColorSpace'i dokumentatsioon, ühised toetatud värviruumid
  • Instagrami kogemus laiade värvide rakendamisel iOS-is
  • Värvihalduse mõistmine