it-swarm.com.de

Farben verstehen auf Android (sechs Zeichen)

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.

201
Thiago

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" .

164
Jon Skeet

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

  1. Nehmen Sie Ihre Deckkraft als Dezimalwert und multiplizieren Sie sie mit 255. Wenn Sie also einen Block haben, der zu 50% undurchsichtig ist, ist der Dezimalwert 0,5. Zum Beispiel: 0,5 x 255 = 127,5
  2. Der Bruch wird nicht in hexadezimal umgewandelt, daher müssen Sie Ihre Zahl auf die nächste ganze Zahl auf- oder abrunden. Zum Beispiel: 127,5 rundet auf 128 auf; 55,25 rundet auf 55 ab.
  3. Geben Sie Ihren Dezimalwert in einen Dezimal-Hexadezimal-Konverter ein, z. B. http://www.binaryhexconverter.com/decimal-to-hex-converter , und konvertieren Sie Ihre Werte.
  4. Wenn Sie nur einen einzelnen Wert zurückerhalten, müssen Sie ihm eine Null voranstellen. Wenn Sie beispielsweise versuchen, eine Deckkraft von 5% zu erzielen und diesen Prozess durchlaufen, erhalten Sie den Hexadezimalwert D. Fügen Sie eine Null davor hinzu, sodass sie als 0D angezeigt wird.

So finden Sie den Alpha-Kanalwert. Ich habe mir erlaubt, eine Liste von Werten für Sie zusammenzustellen. Genießen!

Hex Opazitätswerte

  • 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
1159
BlondeFurious

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.

179
Jared Rummler

Android Material Design

Dies sind die Konvertierungen zum Festlegen der Deckkraftstufen für Textfarben.

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

Dunkler Text auf hellem Hintergrund

enter image description here

  • Primärtext: DE000000
  • Sekundärtext: 8A000000
  • Deaktivierter Text, Hinweistext und Symbole: 61000000
  • Teiler: 1F000000

Weißer Text auf dunklen Hintergründen

enter image description here

  • Primärtext: FFFFFFFF
  • Sekundärtext: B3FFFFFF
  • Deaktivierter Text, Hinweistext und Symbole: 80FFFFFF
  • Teiler: 1FFFFFFF

Siehe auch

  • Schlagen Sie einen beliebigen Prozentsatz nach hier .
33
Suragch

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

16
alibi

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.

7
kcoppock