J'essaie de comprendre le fonctionnement des couleurs sous Android. J'ai cette couleur définie comme arrière-plan de mon LinearLayout
, et j'obtiens un arrière-plan gris avec une certaine transparence:
<gradient Android:startColor="#b4555555" Android:endColor="#b4555555"
Android:angle="270.0" />
Si je supprime les deux derniers caractères (55), j'obtiens une couleur unie qui perd la transparence. J'essayais de trouver une page où je pouvais voir une explication à ce sujet, mais je ne pouvais pas la trouver.
Si vous fournissez 6 chiffres hexadécimaux, cela signifie RGB (2 chiffres hexadécimaux pour chaque valeur de rouge, vert et bleu).
Si vous fournissez 8 chiffres hexadécimaux, il s’agit d’un ARVB (2 chiffres hexadécimaux pour chaque valeur alpha, rouge, verte et bleue, respectivement).
Donc, en supprimant le résultat final, vous passez de A = B4, R = 55, G = 55, B = 55 (un gris presque transparent), à R = B4, G = 55, B = 55 (un non -transparent pinky sombre).
Voir le documentation "Couleur" pour les formats supportés.
Android utilise des valeurs ARGB hexadécimales, qui sont au format #AARRGGBB. La première paire de lettres, AA, représente le canal alpha. Vous devez convertir vos valeurs d'opacité décimale en une valeur hexadécimale. Voici les étapes:
Processus de valeur alpha-hexa
C'est ainsi que vous trouvez la valeur du canal alpha. J'ai pris la liberté de vous dresser une liste de valeurs. Prendre plaisir!
Hex Opacity Values
Pour reprendre la réponse de @BlondeFurious, voici un code Java permettant d’obtenir chaque valeur hexadécimale de 100% à 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));
}
Sortie:
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
Une version JavaScript est ci-dessous:
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>
Vous pouvez également utiliser simplement Google "nombre à hex", où "nombre" est une valeur comprise entre 0 et 255.
Ce sont les conversions permettant de définir les niveaux d’opacité des couleurs du texte.
DE000000
8A000000
61000000
1F000000
FFFFFFFF
B3FFFFFF
80FFFFFF
1FFFFFFF
Sur Android, les couleurs peuvent être spécifiées en RGB ou ARGB.
http://en.wikipedia.org/wiki/ARGB
En RVB, vous avez deux caractères pour chaque couleur (rouge, vert, bleu) et en ARVB, vous avez deux caractères supplémentaires pour le canal alpha.
Donc, si vous avez 8 caractères, il s'agit d'ARGB, les deux premiers caractères spécifiant le canal alpha. Si vous supprimez les deux premiers caractères, il ne s’agit que de RVB (couleurs unies, pas de transparence). Si vous souhaitez spécifier une couleur dans votre code source Java, vous devez utiliser:
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
Référence: argb
Une valeur de couleur hexadécimale à 8 chiffres est une représentation d'ARVB (Alpha, Rouge, Vert, Bleu), tandis qu'une valeur à 6 chiffres suppose uniquement une opacité de 100% (totalement opaque) et définit uniquement les valeurs RVB. Donc, pour que cela soit complètement opaque, vous pouvez utiliser soit # FF555555, ou simplement # 555555. Chaque valeur hexadécimale à 2 chiffres correspond à un octet, représentant les valeurs de 0 à 255.