Понимание цвета на Android (шесть символов) - PullRequest
201 голосов
/ 26 марта 2011

Я пытаюсь понять, как работают цвета в Android. Я установил этот цвет в качестве фона моего LinearLayout, и я получил серый фон с некоторой прозрачностью:

<gradient android:startColor="#b4555555" android:endColor="#b4555555"
 android:angle="270.0" />

Если я удаляю последние два символа (55), я получаю сплошной цвет, теряя прозрачность. Я пытался найти страницу, где я мог бы найти какое-то объяснение по этому поводу, но я не смог его найти.

Ответы [ 7 ]

1156 голосов
/ 13 июня 2012

Android использует шестнадцатеричные значения ARGB, которые отформатированы как #AARRGGBB.Эта первая пара букв, АА, представляет альфа-канал.Вы должны преобразовать свои десятичные значения непрозрачности в шестнадцатеричное значение.Вот шаги:

Процесс вычисления альфа-шестнадцатеричного значения

  1. Возьмите непрозрачность как десятичное значение и умножьте его на 255. Итак, если у вас есть блокпри непрозрачности 50% десятичное значение будет равно .5.Например: .5 x 255 = 127,5
  2. Дробь не будет преобразована в шестнадцатеричное, поэтому вы должны округлить свое число вверх или вниз до ближайшего целого числа.Например: 127,5 раундов до 128;55,25 округляет до 55.
  3. Введите десятичное значение в десятичное-шестнадцатеричное преобразование, например http://www.binaryhexconverter.com/decimal-to-hex-converter,, и преобразуйте свои значения.
  4. Если вы вернете только одинзначение, префикс его с нуля.Например, если вы пытаетесь получить непрозрачность 5% и проходите этот процесс, вы получите шестнадцатеричное значение D. Добавьте ноль перед ним, чтобы он выглядел как 0D.

Вот так вы найдете значение альфа-канала.Я позволил себе составить список ценностей для вас.Наслаждайтесь!

Значения непрозрачности Hex

  • 100% - FF
  • 95% - F2
  • 90% - E6
  • 85% - D9
  • 80% - CC
  • 75% - BF
  • 70% - B3
  • 65% - A6
  • 60% - 99
  • 55% - 8C
  • 50% - 80
  • 45% - 73
  • 40% - 66
  • 35% - 59
  • 30% - 4D
  • 25% - 40
  • 20% - 33
  • 15% - 26
  • 10% - 1A
  • 5% - 0D
  • 0% - 00
177 голосов
/ 07 августа 2014

Отвечая на вопрос @BlondeFurious, вот код Java для получения каждого шестнадцатеричного значения от 100% до 0% альфа:

for (double i = 1; i >= 0; i -= 0.01) {
    i = Math.round(i * 100) / 100.0d;
    int alpha = (int) Math.round(i * 255);
    String hex = Integer.toHexString(alpha).toUpperCase();
    if (hex.length() == 1)
        hex = "0" + hex;
    int percent = (int) (i * 100);
    System.out.println(String.format("%d%% — %s", percent, hex));
}

Вывод:

100% — FF
99% — FC
98% — FA
97% — F7
96% — F5
95% — F2
94% — F0
93% — ED
92% — EB
91% — E8
90% — E6
89% — E3
88% — E0
87% — DE
86% — DB
85% — D9
84% — D6
83% — D4
82% — D1
81% — CF
80% — CC
79% — C9
78% — C7
77% — C4
76% — C2
75% — BF
74% — BD
73% — BA
72% — B8
71% — B5
70% — B3
69% — B0
68% — AD
67% — AB
66% — A8
65% — A6
64% — A3
63% — A1
62% — 9E
61% — 9C
60% — 99
59% — 96
58% — 94
57% — 91
56% — 8F
55% — 8C
54% — 8A
53% — 87
52% — 85
51% — 82
50% — 80
49% — 7D
48% — 7A
47% — 78
46% — 75
45% — 73
44% — 70
43% — 6E
42% — 6B
41% — 69
40% — 66
39% — 63
38% — 61
37% — 5E
36% — 5C
35% — 59
34% — 57
33% — 54
32% — 52
31% — 4F
30% — 4D
29% — 4A
28% — 47
27% — 45
26% — 42
25% — 40
24% — 3D
23% — 3B
22% — 38
21% — 36
20% — 33
19% — 30
18% — 2E
17% — 2B
16% — 29
15% — 26
14% — 24
13% — 21
12% — 1F
11% — 1C
10% — 1A
9% — 17
8% — 14
7% — 12
6% — 0F
5% — 0D
4% — 0A
3% — 08
2% — 05
1% — 03
0% — 00

Версия JavaScript ниже:

var text = document.getElementById('text');
for (var i = 1; i >= 0; i -= 0.01) {
    i = Math.round(i * 100) / 100;
    var alpha = Math.round(i * 255);
    var hex = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
    var perc = Math.round(i * 100);
    text.innerHTML += perc + "% — " + hex + " (" + alpha + ")</br>";
}
<div id="text"></div>

Вы также можете просто Google "число в шестнадцатеричное", где "число" является любое значение от 0 до 255.

164 голосов
/ 26 марта 2011

Если вы предоставите 6 шестнадцатеричных цифр, это означает, что RGB (2 шестнадцатеричные цифры для каждого значения красного, зеленого и синего).

Если вы предоставите 8 шестнадцатеричных цифр, это ARGB (2 шестнадцатеричных цифры для каждогозначения альфа, красный, зеленый и синий соответственно).

Таким образом, удаляя последние 55, вы переходите от A = B4, R = 55, G = 55, B = 55 (в основном прозрачный серый), до R = B4, G = 55, B = 55 (полностью непрозрачный сумеречный мизинец).

Информацию о поддерживаемых форматах см. в документации "Color" .

33 голосов
/ 13 декабря 2016

Материал Android Дизайн

Это преобразования для установки уровней непрозрачности цвета текста.

  • 100%: FF
  • 87%: DE
  • 70%: B3
  • 54%: 8A
  • 50%: 80
  • 38%: 61
  • 12%: 1F

Темный текст на светлом фоне

enter image description here

  • Основной текст: DE000000
  • Вторичный текст: 8A000000
  • Отключенный текст, текст подсказки и значки: 61000000
  • Разделители: 1F000000

Белый текст на темном фоне

enter image description here

  • Основной текст: FFFFFFFF
  • Вторичный текст: B3FFFFFF
  • Отключенный текст, текст подсказки и значки: 80FFFFFF
  • Разделители: 1FFFFFFF

Смотри также

  • Посмотрите любой процент здесь .
16 голосов
/ 26 марта 2011

На Android цвета могут быть указаны как RGB или ARGB.

http://en.wikipedia.org/wiki/ARGB

В RGB у вас есть два символа для каждого цвета (красный, зеленый, синий), а в ARGB у вас есть два дополнительных символа для альфа-канала.

Итак, если у вас 8 символов, это ARGB, причем первые два символа указывают альфа-канал. Если вы удалите первые два символа, это будет только RGB (сплошные цвета, без альфа / прозрачности). Если вы хотите указать цвет в исходном коде Java, вы должны использовать:

int Color.argb (int alpha, int red, int green, int blue)

alpha  Alpha component [0..255] of the color
red    Red component [0..255] of the color
green  Green component [0..255] of the color
blue   Blue component [0..255] of the color

Ссылка: argb

7 голосов
/ 26 марта 2011

8-значное шестнадцатеричное значение цвета является представлением ARGB (альфа, красный, зеленый, синий), тогда как 6-значное значение предполагает 100% непрозрачность (полностью непрозрачный) и определяет только значения RGB. Таким образом, чтобы сделать это полностью непрозрачным, вы можете использовать # FF555555 или просто # 555555. Каждое 2-значное шестнадцатеричное значение представляет собой один байт, представляющий значения от 0 до 255.

0 голосов
/ 01 августа 2018

в новой версии Chrome (возможно, 67.0.3396.62), для этой модели может использоваться шестнадцатеричный цвет CSS,

, например:

div{
  background-color:#FF00FFcc;
}

cc - непрозрачность, но старый хром не поддерживает этот мод

...