източник на изображение

Android управление на цветовете: какво трябва да знаят разработчиците и дизайнерите

В неотдавнашното издание на Oreo, Android получи първоначална поддръжка за управление на цветовете - което помага да съвпадат цветовите резултати на устройства. С актуализацията устройствата с Android вече могат да показват цветове извън цветовата гама на sRGB. Ако не сте запознати с цветните профили или какви са широките цветови гами, силно препоръчвам този видеоклип от I / O от Google за разбиране на цвета:

TL; DW; управление на цветовете гарантира, че цветовете изглеждат еднакво на различни дисплеи. Например цветът # ff0000 (чисто червено за тези, които не четат шестнадесетични кодове) може да изглежда различно в зависимост от технологията на екрана, която го показва - някои екрани могат да показват по-наситени или интензивни цветове от други. Казването на # ff0000 в sRGB указва специфичен нюанс на червено (в цветовото пространство на sRGB), така че цветните дисплеи, управлявани от цветове, могат да произведат точно желания цвят.

В тази публикация бих искал да очертая какво трябва да знаят дизайнерите и разработчиците на приложения за Android за тези промени.

Показване на широка цветова гама изображения

Изображенията могат да вграждат цветен профил, като декларират цветовото пространство на тяхната цветна информация. По същия начин много камери са способни да улавят широки цветови гами и да вграждат подходящ цветен профил. Това им позволява да показват цветове извън стандартната sRGB гама. За да показвате изображения с широки цветни профили в приложението си, трябва да се включите за дейност. За целта задайте атрибута colorMode в декларацията за активността в манифеста на приложението си:

<дейност
  Android: име = ". WideColorActivity"
  android: colorMode = "wideColorGamut" />

Можете също така да зададете това програмно, но трябва да го направите по време на onCreate преди да бъде създаден прозорецът ви. Поддръжката за широка цветова гама е включена, тъй като изисква повече системни ресурси (което може да доведе до намаляване на производителността на приложението ви):

„Когато е активиран режимът на широка цветова гама, прозорецът на дейността използва повече памет и GPU обработка за композиция на екрана. Преди да активирате режим на широка цветова гама, трябва внимателно да обмислите дали дейността наистина се възползва от нея. Например дейност, която показва снимки на цял екран, е добър кандидат за режим на широка цветова гама, но дейност, която показва малки миниатюри, не е. “- документация за програмисти

Обърнете внимание, че ако използвате единична архитектура на активността, тогава може да има смисъл да разчупите широкоекранния дисплей на цветовата гама в нова дейност.

Ето пример, показващ две дейности, показващи едно и също тестово изображение за широка цветова гама (PNG с вграден цветен профил на дисплея P3), горната активност декларира широко цветен режим на цветовата гама, долната не.

Дейностите, показващи съдържание на широка цветова гама, трябва да се включат в широк цветен режим (отгоре)

Цветно точно изобразяване

Много устройства с Android имат известно време екрани, способни да показват по-широки цветови гами. Преди управлението на цветовете на Android 8.0 цялото съдържание се предполагаше, че е sRGB, но широките цветни дисплеи ще преинтерпретират стойностите на цветовете в тяхната гама и ефективно „разтягат“ цветовете. Това прави червените повече червени, зелените по-зелени и т.н., което води до по-наситен вид. Това разтягане обаче е неточно и няма начин да се изчисли ефектът на разтягане, следователно представените цветове не са точни.

Много приложения са пренаситили активите си, за да компенсират това разтягане. В резултат на това цветовете могат да се появят заглушени, когато се показват на устройства с калибрирани дисплеи. Това е на устройства с цветови точност, като Pixel 2, ненаситените активи ще изглеждат по-малко живи, отколкото на неточни дисплеи. След като цветопредаването е широко разпространено, производителите на приложения могат да спрат да променят активите и да бъдат уверени, че тяхното съдържание се показва по предназначение. Дотогава обаче има няколко стъпки, които можете да предприемете, за да гарантирате, че съдържанието ви изглежда страхотно както на цветни точни дисплеи, така и на устройства, които не се управляват от цветове.

Android 8.0 добавя нов квалификатор за ресурс с широкоъгълни размери, който можете да използвате, за да променяте цветовете на устройства, чийто екран има широка цветова гама и се поддържа широко цветово гамме изобразяване (също сегаidecg за обратната).

Обърнете внимание, че поддръжката на широка цветова гама се различава от това дали текущата активност се изпълнява в цветен режим на широкия цвят. Това означава, че този квалификатор ще се прилага, ако устройството поддържа точно цветопредаване, независимо дали активността се изпълнява в широк цветен режим.

Например приложение може да декларира базова палитра от цветове в res / values ​​/ color.xml:


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

… И алтернативен набор в res / values-widecg / color.xml:


 # 36c1cd 
 # 251f55 
 # c8144e 
 # e4572e 
 # ffc914 
Осигурете различни цветове, които да се използват на точни цветове (вляво) и по-стари устройства

Можете да използвате същата техника с растерни активи (например res / dravable-widecg-mdpi / foo.png), но това ще изисква доставяне на почти дублиращи се активи, така че може да не си струва компромис с увеличаване на размера на приложението ви. Помислете за преминаване към векторни активи, които могат да бъдат оцветени динамично.

Идва по-широка поддръжка

Въпреки че наскоро анонсирахме планове за добавяне на нов „наситен“ цветен режим, който позволява на потребителите да изберат да се откажат от цветовете точно (т.е. да действат като устройства, които сега са вградени), все още вярвам, че е важно да актуализирате приложенията си за света, управляван от цветове. Чрез актуализиране на вашите приложения с по-добра поддръжка за точното цветопредаване, по-малко потребители ще почувстват нужда да се откажат от този режим. Планираме да продължим да инвестираме в широкоцветна поддръжка; добавяне на повече API повърхност за работа с широки цветови гами в бъдещите версии (като актуализирани Paint и Canvas APIs, приемащи цветове с по-голяма битова прецизност).

Реалността на съвременните дисплеи е, че дизайнерите и разработчиците вече трябва да имат разбиране за управлението на цветовете и как да го прилагат в своето приложение. Тъй като все повече устройства се доставят с широка гама дисплеи и точно цветопредаване, важно е да изпреварите вълната и да актуализирате приложенията си, за да осигурите най-доброто изживяване. Считаме това за най-добрия начин да доставите страхотно изживяване на потребителите си, когато цветовете, които виждат, са тези, които сте възнамерявали.

Свързано четене

  • Страхотен грунд за управление на цветовете
  • Широко ръководство за съдържание на цветове
  • Документация за Android ColorSpace, общи поддържани цветови пространства
  • Опитът на Instagram да прилага широк цвят на iOS
  • Осъзнаване на управлението на цветовете