Ich versuche zu verstehen, wie Farben in Android funktionieren. Ich habe diese Farbe als Hintergrund für mein LinearLayout
festgelegt und bekomme einen grauen Hintergrund mit etwas Transparenz:
<gradient Android:startColor="#b4555555" Android:endColor="#b4555555"
Android:angle="270.0" />
Wenn ich die letzten beiden Zeichen (55) entferne, erhalte ich eine durchgehende Farbe und verliere die Transparenz. Ich habe versucht, eine Seite zu finden, auf der ich eine Erklärung dazu finden kann, aber ich konnte sie nicht finden.
Wenn Sie 6 Hexadezimalstellen angeben, bedeutet dies RGB (2 Hexadezimalstellen für jeden Wert von Rot, Grün und Blau).
Wenn Sie 8 hexadezimale Ziffern eingeben, handelt es sich um ein ARGB (2 hexadezimale Ziffern für jeden Wert von Alpha, Rot, Grün und Blau).
Wenn Sie also die letzten 55 entfernen, ändern Sie sich von A = B4, R = 55, G = 55, B = 55 (ein größtenteils transparentes Grau) zu R = B4, G = 55, B = 55 (ein nicht ganz -transparenter düsterer kleiner Finger).
Informationen zu den unterstützten Formaten finden Sie in der Dokumentation "Farbe" .
Android verwendet hexadezimale ARGB-Werte, die als #AARRGGBB formatiert sind. Das erste Buchstabenpaar AA repräsentiert den Alphakanal. Sie müssen Ihre dezimalen Opazitätswerte in einen hexadezimalen Wert konvertieren. Hier sind die Schritte:
Alpha-Hex-Wert-Prozess
So finden Sie den Alpha-Kanalwert. Ich habe mir erlaubt, eine Liste von Werten für Sie zusammenzustellen. Genießen!
Hex Opazitätswerte
Nach der Antwort von @BlondeFurious folgt ein Java Code, um jeden Hexadezimalwert von 100% auf 0% Alpha zu bringen:
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));
}
Ausgabe:
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
Eine JavaScript-Version ist unten:
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>
Sie können auch einfach "number to hex" von Google eingeben, wobei "number" ein beliebiger Wert zwischen 0 und 255 ist.
Dies sind die Konvertierungen zum Festlegen der Deckkraftstufen für Textfarben.
DE000000
8A000000
61000000
1F000000
FFFFFFFF
B3FFFFFF
80FFFFFF
1FFFFFFF
Unter Android können Farben als RGB oder ARGB angegeben werden.
http://en.wikipedia.org/wiki/ARGB
In RGB haben Sie zwei Zeichen für jede Farbe (Rot, Grün, Blau) und in ARGB zwei zusätzliche Zeichen für den Alphakanal.
Wenn Sie also 8 Zeichen haben, ist dies ARGB, wobei die ersten beiden Zeichen den Alphakanal angeben. Wenn Sie die beiden führenden Zeichen entfernen, handelt es sich nur um RGB (Volltonfarben, kein Alpha/Transparenz). Wenn Sie eine Farbe in Ihrem Java Quellcode angeben möchten, müssen Sie Folgendes verwenden:
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
Referenz: argb
Ein 8-stelliger hexadezimaler Farbwert ist eine Darstellung von ARGB (Alpha, Rot, Grün, Blau), während ein 6-stelliger Wert nur eine Deckkraft von 100% (vollständig undurchsichtig) annimmt und nur die RGB-Werte definiert. Um dies vollständig undurchsichtig zu machen, können Sie entweder # FF555555 oder nur # 555555 verwenden. Jeder zweistellige Hexadezimalwert ist ein Byte und repräsentiert Werte von 0 bis 255.