colors inverser - Comprendre les couleurs sur Android(six caractères)



page negatif (6)

J'essaie de comprendre comment les couleurs fonctionnent sous Android. J'ai ce jeu de couleurs comme arrière-plan de mon LinearLayout , et j'obtiens un fond gris avec de la transparence:

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

Si j'enlève les deux derniers caractères (55) j'obtiens une couleur unie, perdant la transparence. J'essayais de trouver une page où je peux voir des explications à ce sujet, mais je ne pouvais pas le trouver.


Answers

Android utilise des valeurs ARGB hexadécimales, qui sont au format #AARRGGBB. Cette première paire de lettres, l'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 Hex

  1. Prenez votre opacité comme une valeur décimale et multipliez-la par 255. Donc, si vous avez un bloc opaque à 50%, la valeur décimale sera .5. Par exemple: .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 arrondit jusqu'à 128; 55,25 arrondit à 55.
  3. Entrez votre valeur décimale dans un convertisseur décimal-à-hexadécimal, comme http://www.binaryhexconverter.com/decimal-to-hex-converter , et convertissez vos valeurs.
  4. Si vous ne récupérez qu'une seule valeur, préfixez-la avec un zéro. Par exemple, si vous essayez d'obtenir une opacité de 5% et que vous passez par ce processus, vous obtiendrez la valeur hexadécimale de D. Ajoutez un zéro devant lui pour qu'il apparaisse comme 0D.

C'est ainsi que vous trouvez la valeur du canal alpha. J'ai pris la liberté de dresser une liste de valeurs pour vous. Prendre plaisir!

Valeurs d'opacité hexadécimale

  • 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

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, c'est un ARGB (2 chiffres hexadécimaux pour chaque valeur de alpha, rouge, vert et bleu respectivement).

Donc, en enlevant le 55 final, vous changez de A = B4, R = 55, G = 55, B = 55 (un gris principalement transparent), à R = B4, G = 55, B = 55 (un entièrement non - pinky sombre et transparent).

Voir la documentation "Couleur" pour les formats supportés.


Sur Android, les couleurs peuvent être spécifiées en tant que RVB ou ARGB.

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

En RVB vous avez deux caractères pour chaque couleur (rouge, vert, bleu), et en ARGB vous avez deux caractères supplémentaires pour le canal alpha.

Donc, si vous avez 8 caractères, c'est ARGB, avec les deux premiers caractères spécifiant le canal alpha. Si vous enlevez les deux premiers caractères, c'est seulement RVB (couleurs unies, pas d'alpha / 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 de ARGB (Alpha, Rouge, Vert, Bleu), tandis qu'une valeur à 6 chiffres prend juste 100% d'opacité (entièrement opaque) et ne définit que les valeurs RVB. Donc, pour que ce soit totalement opaque, vous pouvez utiliser # FF555555, ou juste # 555555. Chaque valeur hexadécimale à 2 chiffres est un octet, représentant des valeurs comprises entre 0 et 255.


En quittant la réponse de @BlondeFurious, voici un code Java pour 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 aussi juste "nombre à hex" de Google où "nombre" est une valeur entre 0 et 255.


Pour ajouter des informations supplémentaires à cela.

J'ai récemment mis à niveau mon installation Ubuntu vers Ubuntu 10.04 LTS (Lucid Lynx), qui à son tour a mis à jour ma version de Java pour:

Java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)

Et maintenant, l'émulateur (bien que cela prenne un peu de temps) semble fonctionner plus rapidement que précédemment.

Cela vaut peut-être la peine de mettre à niveau leur machine virtuelle.





android colors hex transparency