izvor slike

Android Upravljanje bojama: Što programeri i dizajneri trebaju znati

U nedavnom izdanju Oreoa, Android je stekao početnu podršku za upravljanje bojama - što pomaže uskladiti rezultate boja na svim uređajima. S nadogradnjom Android uređaji sada mogu prikazivati ​​boje izvan sRGB raspona boja. Ako niste upoznati s profilima boja ili širokim rasponima boja, toplo preporučujem ovaj videozapis s Google I / O za razumijevanje boje:

tl, DW, upravljanje bojama osigurava da boje izgledaju isto na različitim zaslonima. Na primjer, boja # ff0000 (čisto crvena za one koji ne čitaju šesterokutne kodove) može se prikazati različito, ovisno o tehnologiji zaslona koja je prikazuje - neki zasloni mogu prikazati zasićenije ili intenzivnije boje od drugih. Izreka # ff0000 u sRGB određuje specifičnu nijansu crvene (u sRGB prostoru boja) tako da zasloni kojima upravlja boja mogu proizvesti točno željenu boju.

U ovom postu želim opisati što dizajneri i programeri Android aplikacija trebaju znati o tim promjenama.

Prikaz širokih raspona slika u boji

U slike se može umetnuti profil boja, deklarirajući prostor boja za njihove informacije o boji. Slično tome, mnoge kamere mogu snimati široke raspon boja i ugrađivati ​​odgovarajući profil boja. To im omogućuje prikaz boja izvan standardne sRGB raspona. Za prikaz slika sa širokim profilima u boji u vašoj aplikaciji morate se prijaviti po aktivnosti. Da biste to učinili, postavite atribut colorMode u deklaraciji o aktivnosti u manifestu vaše aplikacije:

Ovo možete postaviti i programsko, ali to trebate učiniti tijekom onCreate prije nego što se stvori vaš Window. Uključena je podrška široke gamut boja jer zahtijeva više resursa sustava (što može rezultirati smanjenjem performansi u vašoj aplikaciji):

"Kada je omogućen široki opseg gamut boja, prozor aktivnosti koristi više memorije i GPU obrade za kompoziciju zaslona. Prije nego što omogućite široki opseg gamut boja, trebali biste pažljivo razmotriti da li aktivnost zaista ima koristi od njega. Na primjer, aktivnost koja prikazuje fotografije na cijelom zaslonu dobar je kandidat za široki opseg raspona boja, ali aktivnost koja prikazuje male sličice nije. "- dokumentacija za programere

Imajte na umu da ako koristite jednu arhitekturu aktivnosti, možda će imati smisla prebaciti prikaz široke gamut slike u novu aktivnost.

Evo primjera koji prikazuje dvije aktivnosti koje prikazuju istu testnu sliku široke raspona boja (PNG s ugrađenim profilom boje zaslona P3), a gornja aktivnost deklarira način široke gamut boja u boji, a donja ne.

Aktivnosti koje prikazuju široki raspon boja u boji moraju se uključiti u široki način boja (gore)

Točno prikaz u boji

Mnogi Android uređaji već neko vrijeme imaju zaslone koji omogućuju prikazivanje širih raspona boja. Prije upravljanja bojama Android 8.0, pretpostavljalo se da je sav sadržaj sRGB, ali široki zasloni u boji ponovno će protumačiti vrijednosti boje u njihovoj rasponi i učinkovito "rastezati" boje. Zbog toga su crvene boje više crvene, zelenije zelenije itd. Što dovodi do zasićenijeg izgleda. Međutim, ovo istezanje je neprecizno i ​​ne postoji način da se izračuna učinak istezanja, pa premazvane boje nisu tačne.

Mnoge su aplikacije zasitile svoju imovinu da nadoknade ovo rastezanje. Kao posljedica toga, boje se mogu prigušiti ako se prikažu na uređajima s kalibriranim zaslonom. Na uređajima koji imaju točnu boju, kao što je Pixel 2, zasićena sredstva će se pojaviti manje živopisno nego na netačnim zaslonima. Nakon što se pojava koja je precizno prikazana u boji raširi, proizvođači aplikacija mogu prestati mijenjati sredstva i biti sigurni da će njihov sadržaj biti prikazan kako je predviđeno. Do tada, ipak možete poduzeti nekoliko koraka kako biste osigurali da vaš sadržaj izgleda sjajno i na zaslonima preciznim u boji, i na uređajima koji ne upravljaju bojama.

Android 8.0 dodaje novi kvalifikator resursa širokog opsega koji možete koristiti za izmjenu boja na uređajima čiji zaslon ima široku gamut boja i široko raspon boja poduprt je (također sadaidecg za obrnuto).

Imajte na umu da se podrška široke raspona boja razlikuje od trenutne aktivnosti u širokom načinu boja CololorGamut. To znači da će se ovaj kvalifikator primijeniti ako uređaj podržava prikaz točno u boji, bez obzira na to radi li se u širokom načinu boje.

Na primjer, aplikacija može proglasiti osnovnu paletu boja u rez / vrijednostima / bojama.xml:


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

… I alternativni set u res / values-widecg / color.xml:


 # 36c1cd 
 # 251f55 
 # c8144e 
 # e4572e 
 # ffc914 
Navedite različite boje koje će se upotrebljavati na točnim bojama (lijevo) i starijim uređajima

Možete koristiti istu tehniku ​​s rasterskim resursima (npr. Res / dravable-widecg-mdpi / foo.png), ali to će zahtijevati otpremu blizu-duplikata imovine, tako da možda neće biti vrijedno kompromisa povećavanja veličine vaše aplikacije. Razmislite o prelasku na vektorska sredstva koja se mogu dinamički obojati.

Šira podrška dolazi

Iako smo nedavno najavili planove za dodavanje novog „zasićenog“ načina boje, kojim će se korisnici odlučiti da se isključe s preciznim prikazom u boji (tj. Da se ponašaju kao sadidecg uređaji), i dalje vjerujem da je važno ažurirati svoje aplikacije za svijet kojim upravljaju bojama. Ažuriranjem aplikacija za bolju potporu preciznog prikazivanja u boji, manje će korisnika osjećati potrebu isključivanja iz ovog načina rada. Planiramo nastaviti ulagati u široku podršku; dodavanju više API površine za rad sa širokim rasponima boja u budućim izdanjima (poput ažuriranih Paint i Canvas API-ja koji prihvaćaju boje s većom preciznošću bita).

Stvarnost modernih zaslona je da dizajneri i programeri sada moraju razumjeti upravljanje bojama i kako ih primijeniti unutar svoje aplikacije. Kako se sve više uređaja isporučuje sa širokim rasponom prikaza i preciznim prikazom u boji, važno je doći ispred vala i ažurirati aplikacije kako biste pružili najbolje iskustvo. Smatramo da je to najbolji način da korisnicima pružite sjajno iskustvo tamo gdje boje vide one koje ste namjeravali.

Povezano čitanje

  • Izvrstan primer za upravljanje bojama
  • Širok vodič sadržaja u boji
  • Android ColorSpace dokumentacija, zajednički podržani prostori u boji
  • Instagram iskustvo implementira široke boje na iOS
  • Osjećaj upravljanja bojama