Zrozumienie kolorów na Androida (sześć znaków)

Próbuję zrozumieć, jak kolory działają w Androidzie. Mam ten kolor Ustawiony jako tło mojego LinearLayout i dostaję szare tło z pewną przezroczystością:

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

Jeśli usunę dwa ostatnie znaki (55), uzyskam jednolity kolor, tracąc przezroczystość. Próbowałem znaleźć stronę, gdzie mogę zobaczyć jakieś wyjaśnienie na ten temat, ale nie mogłem go znaleźć.

Author: Peter Mortensen, 2011-03-26

7 answers

Jeśli podasz 6 cyfr szesnastkowych, oznacza to RGB (2 cyfry szesnastkowe dla każdej wartości czerwonej, zielonej i niebieskiej).

Jeśli podasz 8 cyfr szesnastkowych, będzie to ARGB (2 cyfry szesnastkowe dla każdej wartości odpowiednio Alfa, czerwona, zielona i niebieska).

Więc usuwając Ostatnie 55 zmieniasz z A=B4, R=55, G = 55 ,B=55 (najczęściej przezroczysty szary), Na R=B4, G=55, B = 55 (W pełni nieprzezroczysty ciemny róż).

Zobacz "kolor" dokumentacja dla obsługiwanych formatów.

 158
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-10 10:54:34

Android używa szesnastkowych wartości ARGB, które są sformatowane jako #aarrggbb. Pierwsza para liter, AA, reprezentuje kanał alfa. Musisz przekonwertować wartości krycia dziesiętnego na wartość szesnastkową. Oto kroki:

Alpha Hex Value Process

  1. weź nieprzezroczystość jako wartość dziesiętną i pomnóż ją przez 255. Tak więc, jeśli masz blok, który jest 50% nieprzezroczysty, wartość dziesiętna będzie .5. Na przykład: .5 x 255 = 127,5
  2. ułamek nie konwertuje do szesnastkowego, więc należy zaokrąglić numer w górę lub w dół do najbliższej liczby całkowitej. Na przykład: 127,5 rund do 128; 55,25 rund do 55.
  3. Wprowadź wartość dziesiętną w konwerterze dziesiętnym na szesnastkowy, jak http://www.binaryhexconverter.com/decimal-to-hex-converter i Przelicz swoje wartości.
  4. Jeśli otrzymasz tylko jedną wartość, przedrostek jej zerem. Na przykład, jeśli próbujesz uzyskać 5% krycia i przechodzisz przez ten proces, skończysz z wartością szesnastkową D. Dodaj zero przed nim, aby wyświetlało się jako 0D.

W ten sposób można znaleźć wartość kanału alfa. Pozwoliłem sobie przygotować dla Ciebie listę wartości. Smacznego!

Wartości Nieprzezroczystości Szesnastkowej

  • 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
 1074
Author: BlondeFurious,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-28 21:59:01

Wyłączając odpowiedź z @ BlondeFurious, oto kod Javy, aby uzyskać każdą wartość szesnastkową od 100% do 0% alpha:

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));
}

Wyjście:

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

Wersja JavaScript jest poniżej:

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>

Możesz również po prostu wygooglować "number to hex", gdzie 'number' to dowolna wartość między 0 a 255.

 156
Author: Jared Rummler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-28 22:01:01

Android Material Design

Są to konwersje służące do ustawiania poziomów krycia koloru tekstu.

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

Ciemny tekst na jasnym tle

Tutaj wpisz opis obrazka

  • tekst podstawowy: DE000000
  • tekst drugorzędny: 8A000000
  • wyłączony tekst, tekst podpowiedzi i ikony: 61000000
  • dzielniki: 1F000000

Biały tekst na ciemnym tle

Tutaj wpisz opis obrazka

  • tekst podstawowy: FFFFFFFF
  • tekst drugorzędny: B3FFFFFF
  • wyłączony tekst, tekst podpowiedzi i ikony: 80FFFFFF
  • dzielniki: 1FFFFFFF

Zobacz też

  • Wyszukaj dowolny procent tutaj .
 22
Author: Suragch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-14 05:32:20

Na Androidzie kolory mogą być określone jako RGB lub ARGB.

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

W RGB masz dwa znaki dla każdego Koloru (Czerwony, zielony, niebieski), a w ARGB dwa dodatkowe znaki dla kanału alfa.

Więc, jeśli masz 8 znaków, jest to ARGB, z dwoma pierwszymi znakami określającymi kanał alfa. Jeśli usuniesz dwa pierwsze znaki, będzie to tylko RGB (jednolite kolory, brak Alfy/przezroczystości). Jeśli chcesz określić kolor w kodzie źródłowym Javy musisz użyć:

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

Odniesienie: argb

 16
Author: alibi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-28 21:42:43

8-cyfrowa wartość koloru sześciocyfrowego jest reprezentacją ARGB (Alfa, Czerwony, Zielony, Niebieski), podczas gdy 6-cyfrowa wartość przyjmuje tylko 100% krycia (w pełni nieprzezroczyste) i definiuje tylko wartości RGB. Aby było to całkowicie nieprzezroczyste, możesz użyć #FF555555 lub po prostu # 555555. Każda 2-cyfrowa wartość szesnastkowa jest jednym bajtem, reprezentującym wartości od 0-255.

 7
Author: kcoppock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-26 20:34:29

W nowej wersji chrome (może 67.0.3396.62) , CSS hex color może używać tego modelu wyświetlacza,

Eg:

div{
  background-color:#FF00FFcc;
}

Cc jest nieprzezroczystością, ale stary chrome nie obsługuje tego mod

 -1
Author: Heicks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-01 15:05:30