Color Android Studio (Цвета)

java.lang.Object
 ↳ android.graphics.Color

Для создания и манипуляциями с цветами существует класс Color. Он представлен в трех проявлениях:

  • Color Int
  • Color Longs
  • Color экземпляр

Color Int

Фактически это переменная типа int, которая объединяет в себе 4 компонента:

Компонент Имя Розмер Диапазон значений
A Alpha 8 бит [0..255]

«>[0..255]

R Red 8 бит [0..255]

«>[0..255]

G Green 8 бит [0..255]

«>[0..255]

B Blue 8 бит [0..255]

«>[0..255]

int занимает 32 бита, и 4 компонента — каждый по 8 бит — дают 32 бита информации.

Один из приемов, как задав переменные A, R, G, B в диапазоне от 0 до 255 преобразовать их в 16-ричный вид нужного формата:

int color = (A & 0xff) << 24 | (R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff);

Обратное преобразование:

 int A = (color >> 24) & 0xff;
 int R = (color >> 16) & 0xff;
 int G = (color >>  8) & 0xff;
 int B = (color      ) & 0xff;

Но так же значения можно извлечь, используя методы класса color: alpha(int), red(int), blue(int), green(int). В скобках указывается переменная, содержащая colorInt.

 

Color Longs

Этот тип более точный, чем ColorInt, поэтому задавая его передаются больше компонентов и поддерживает различные цветовые схемы:

Component Name Size Range
схема RGB
R Red 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

G Green 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

B Blue 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

A Alpha 10 бит [0..1023]

«>[0..1023]

Color space 6 бит [0..63]

«>[0..63]

схемаsRGB
A Alpha 8 бит [0..255]

«>[0..255]

R Red 8 бит [0..255]

«>[0..255]

G Green 8 бит [0..255]

«>[0..255]

B Blue 8 бит [0..255]

«>[0..255]

X не используются 32 бит 0

«>0

схемаXYZ
X X 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

Y Y 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

Z Z 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

A Alpha 10 бит [0..1023]

«>[0..1023]

Color space 6 бит [0..63]

«>[0..63]

схемаLab
L L 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

a a 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

b b 16 бит [65504.0,65504.0]

«>[−65504.0,65504.0]

A Alpha 10 бит [0..1023]

«>[0..1023]

Color space 6 бит [0..63]

«>[0..63]

схемаCMYK
Не поддерживается

 

Чтобы отличать переменную long от int рекомендуется использовать аннотацию @ColorLong:

@ColorLong long p3 = pack(1.0f, 1.0f, 0.0f, 1.0f, colorSpaceP3);

Наиболее часто для запаковки цвета используется метод pack, который на вход принимает набор переменных float и название цветовой схемы.

Для получения отдельных компонентов из переменной long используются те же методы что и в int: alpha(long) чтобы получить последний по счету компонент; red(long) чтобы получить 1й по счету компонент, green(long) чтобы получить 2й по счету компонент, blue(long) чтобы получить 3й по счету компонент.

Существуют различные цветовые схемы, чтобы использовать одну из них необходимо обратиться к методу абстрактного класса ColorSpace:

ColorSpace lab = ColorSpace.get(ColorSpace.Named.LAB);

Вместо LAB можно указать любое из значений enum ColorSpace.Named: ACES, ACESCG, ADOBE_RGB, BT2020, BT709, CIE_LAB, CIE_XYZ, DCI_P3, DISPLAY_P3, EXTENDED_SRGB, LINEAR_EXTENDED_SRGB, LINEAR_SRGB, NTSC_1953, PRO_PHOTO_RGB, SMPTE_C, SRGB.

Чтобы перейти от одной цветовой схемы к другой можно воспользоваться методом connect(ColorSpace, ColorSpace).

 

Color экземпляр класса

Теперь, когда мы задали числовое представление цвета, используя различные цветовые схемы и возможности компановки, можно создать экземпляр класса Color:

 @ColorLong long p3 = pack(1.0f, 1.0f, 0.0f, 1.0f, colorSpaceP3);
 Color opaqueYellow = Color.valueOf(p3); // из переменной цвета long
Color opaqueRed = Color.valueOf(0xffff0000); // из переменной цвета int

 

Константы

int BLACK
int BLUE
int CYAN
int DKGRAY
int GRAY
int GREEN
int LTGRAY
int MAGENTA
int RED
int TRANSPARENT
int WHITE
int YELLOW

При создании экземпляра класса Color, по умолчанию используется цветовая схема sRGB

 

Методы

static int HSVToColor(float[] hsv) Преобразование компонентов HSV в цвет ARGB.
static int HSVToColor(int alpha, float[] hsv) Преобразование компонентов HSV в цвет ARGB.
static void RGBToHSV(int red, int green, int blue, float[] hsv) Преобразование RGB-компонентов в HSV.
static int alpha(int color) Возвращает альфа-компонент цвета int.
float alpha() Возвращает значение альфа-компонента в диапазоне [0..1].
static float alpha(long color) Возвращает альфа-компонент, закодированный в указанном цвете.
static int argb(int alpha, int red, int green, int blue) Возвращает цвет-int из альфа, красного, зеленого, синего компонентов.
static int argb(float alpha, float red, float green, float blue) Возвращает цвет-int из альфа-, красных, зеленых, синих поплавковых компонентов в диапазоне [0..1].
static int blue(int color) Возвращает синий компонент цвета int.
float blue() Возвращает значение синего компонента в диапазоне, определяемом цветовым пространством этого цвета
static float blue(long color) Возвращает синий компонент, закодированный в указанном цвете.
staticColorSpace colorSpace(long color) Возвращает цветовое пространство, закодированное в указанном цвете.
static void colorToHSV(int color, float[] hsv) Преобразует цвет ARGB в его компоненты HSV.
static long convert(long color, ColorSpace.Connector connector) Преобразует указанный цвет из цветового пространства в другое с помощью указанного цветового пространства.
Color convert(ColorSpace colorSpace) Преобразует этот цвет из своего цветового пространства в указанное цветовое пространство.
static long convert(int color, ColorSpace colorSpace) Преобразует указанный цвет ARGB цвета из цветового пространства sRGB в указанное цветовое пространство
static long convert(float r, float g, float b, float a, ColorSpace source, ColorSpace destination) Преобразует указанный 3-компонентный цвет из исходного цветового пространства в целевое цветовое пространство.
static long convert(float r, float g, float b, float a, ColorSpace.Connector connector) Преобразует указанный 3-компонентный цвет из цветового пространства в другое, используя указанный формат цветового пространства.
static long convert(long color, ColorSpace colorSpace) Преобразует указанный цвет с цветового пространства в указанное цветовое пространство
boolean equals(Object o) Указывает, является ли какой-либо другой объект «равным» этому.
ColorSpace getColorSpace() Возвращает цветовое пространство этого цвета.
float getComponent(int component) Возвращает значение указанного компонента в диапазоне, определяемом цветовым пространством этого цвета (см. GetMinValue (int) иgetMaxValue (int)).
int getComponentCount() Возвращает количество компонентов, которые формируют значение цвета в соответствии с цветовой моделью этого цветового пространства, плюс один дополнительный компонент для альфы.
float[] getComponents() Возвращает компоненты этого цвета в виде нового массива.
float[] getComponents(float[] components) Копирует компоненты этого цвета в поставляемом массиве.
ColorSpace.Model getModel() Возвращает цветовую модель этого цвета.
static float green(long color) Возвращает зеленый компонент, закодированный в указанном цвете.
float green() Returns the value of the green component in the range defined by this color’s color space (see getMinValue(int) andgetMaxValue(int)).
static int green(int color) Возвращает зеленый компонент цвета int.
int hashCode() Возвращает значение хэш-кода для объекта.
static boolean isInColorSpace(long color, ColorSpace colorSpace) Указывает, указан ли указанный цвет в указанном цветовом пространстве.
boolean isSrgb() Указывает, находится ли этот цвет в цветовом пространстве sRGB.
static boolean isSrgb(long color) Указывает, указан ли указанный цвет в цветовом пространстве sRGB.
static boolean isWideGamut(long color) Указывает, находится ли указанный цвет в цветовом пространстве с широким охватом.
boolean isWideGamut() Указывает, находится ли этот цветный цвет в цветовом пространстве с широким охватом.
static float luminance(long color) Возвращает относительную яркость цвета.
static float luminance(int color) Возвращает относительную яркость цвета.
float luminance() Возвращает относительную яркость этого цвета.
static long pack(int color) Преобразует указанный цвет ARGB в цвет RGBA в цветовом пространстве sRGB.
static long pack(float red, float green, float blue, float alpha) Упаковывает цвет sRGB, определенный указанными значениями красного, зеленого, синего и альфа-компонентов, в цвет RGBA в цветовом пространстве sRGB.
static long pack(float red, float green, float blue, float alpha, ColorSpace colorSpace) Упаковывает 3-компонентный цвет, определенный указанными значениями красного, зеленого, синего и альфа-компонентов, в цвет, длинный в указанном цветовом пространстве.
static long pack(float red, float green, float blue) Упаковывает цвет sRGB, определенный указанными значениями красного, зеленого и синего компонентов, в цвет RGBA, длинный в цветовом пространстве sRGB.
long pack() Разбирает строку и возвращает соответсвующий цвет-int.
static int parseColor(String colorString) Parse the color string, and return the corresponding color-int.
float red() Возвращает значение красного компонента в диапазоне, определяемом цветовым пространством этого цвета
static float red(long color) Возвращает красный компонент, закодированный в указанном цвете.
static int red(int color) Возвращает красный компонент цвета int.
static int rgb(float red, float green, float blue) Возвращает цвет-int из красных, зеленых, синих компонентов с плавающей точкой в ​​диапазоне [0..1].
static int rgb(int red, int green, int blue) Возвращает цвет-int из красного, зеленого, синего компонентов.
int toArgb() Преобразует этот цвет в цвет ARGB.
static int toArgb(long color) Преобразует указанный цвет в длину до ARGB color int.
String toString() Возвращает строковое представление объекта.
static Color valueOf(float r, float g, float b) Создает новый непрозрачный цвет в цветовом пространстве sRGB с указанными значениями красного, зеленого и синего компонентов.
static Color valueOf(float r, float g, float b, float a) Создает новый цвет в цветовом пространстве sRGB с указанными значениями красного, зеленого, синего и альфа-компонентов.
static Color valueOf(int color) Создает новый экземпляр Color из цвета ARGB int.
static Color valueOf(float[] components, ColorSpace colorSpace) Создает новый цвет в указанном цветовом пространстве с указанными значениями компонентов.
static Color valueOf(long color) Создает новый экземпляр Color из длинного цвета.
static Color valueOf(float r, float g, float b, float a, ColorSpace colorSpace) Создает новый цвет в указанном цветовом пространстве с указанными значениями красного, зеленого, синего и альфа-компонентов.

You may also like...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *