web-dev-qa-db-fra.com

Comprendre les couleurs sur Android (six caractères)

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.

201
Thiago

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.

164
Jon Skeet

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

  1. Prenez votre opacité en tant que valeur décimale et multipliez-la par 255. Ainsi, si vous avez un bloc opaque à 50%, la valeur décimale serait 0,5. Par exemple: 0,5 x 255 = 127,5
  2. La fraction ne sera pas convertie en hexadécimal. Vous devez donc arrondir votre nombre au nombre entier le plus proche. Par exemple: 127,5 arrondis à 128; 55,25 arrondit à 55.
  3. Entrez votre valeur décimale dans un convertisseur décimal en hexadécimal, tel que http://www.binaryhexconverter.com/decimal-to-hex-converter , puis convertissez vos valeurs.
  4. Si vous ne récupérez qu'une seule valeur, préfixez-la par un zéro. Par exemple, si vous essayez d'obtenir une opacité de 5% et que vous suivez ce processus, vous obtiendrez la valeur hexadécimale de D. Ajoutez un zéro devant pour l'afficher sous la forme 0D.

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 ​​

  • 100% - FF
  • 95% - F2
  • 90% - E6
  • 85% - J9
  • 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% - 0J
  • 0% - 00
1159
BlondeFurious

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.

179
Jared Rummler

Conception matérielle Android

Ce sont les conversions permettant de définir les niveaux d’opacité des couleurs du texte.

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

Texte sombre sur fond clair

enter image description here

  • Texte primaire: DE000000
  • Texte secondaire: 8A000000
  • Texte, indice et icônes désactivés: 61000000
  • Diviseurs: 1F000000

Texte blanc sur fond sombre

enter image description here

  • Texte primaire: FFFFFFFF
  • Texte secondaire: B3FFFFFF
  • Texte, indice et icônes désactivés: 80FFFFFF
  • Diviseurs: 1FFFFFFF

Voir également

  • Cherchez n'importe quel pourcentage ici .
33
Suragch

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

16
alibi

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.

7
kcoppock