J'ai besoin de définir une valeur d'opacité sur une couleur en XML dessinable. Mais quand j'essaie d'ajouter les deux valeurs d'opacité (# 20C0C0C0) par exemple, ne fonctionne pas. La couleur apparaît totalement transparente.
Voici mon code ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<corners
Android:radius="2dp" />
<solid
Android:color="#CDCDCD" />
<stroke
Android:width="2dp"
Android:color="@Android:color/darker_gray" />
<size
Android:height="60dp"
Android:width="80dp"/>
</shape>
Quelqu'un a une idée? Merci de votre aide.
je peux être un peu en retard, mais si quelqu'un d'autre vient à ce poste et recherche des valeurs alpha. Jared Rummler a fait le travail et nous fournit toutes les valeurs possibles https://stackoverflow.com/a/27813407/5973229
Il utilise donc cette méthode pour calculer chaque valeur d'opacité dans le code Hex:
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));
Et voici le résultat:
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
La couleur "apparaît" totalement transparente b/c elle est presque totalement transparente. Les couleurs hexadécimales sont normalement de 6 chiffres #RRGGBB mais si vous souhaitez définir l'opacité, vous passez en 2 chiffres sur une échelle hexadécimale (base-16) au début, donc dans votre cas # 20C0C0C0 votre opacité est de 20 (en base-16) .
Voici quelques valeurs alpha décimales typiques mappées à des valeurs hexadécimales
Votre opacité n'est donc que de ~ 12%.
Si vous souhaitez qu'il soit plus opaque (moins transparent), utilisez un nombre plus élevé (7F vous donnera environ 50% d'opacité)
Alors:
<solid Android:color="#7FC0C0C0" />
Donner une réponse mise à jour pour quand les gens voient cela, après 2018. Autant que je l'ai vu, lors du développement pour les versions d'API> Lollipop, il n'est pas nécessaire d'utiliser des valeurs hexadécimales pour alpha. J'ai vérifié cela hier et j'ai également été surpris par cela.
Dans les schémas de couleurs Android, nous utilisons des valeurs hexadécimales comme dans #FFFFFF pour la couleur blanche. Cela représente les canaux RVB dans ladite couleur. En d'autres termes, comme mentionné par @Cumulo Nimbus ci-dessus, #RRGGBB.
Pour l'opacité/la transparence, vous devez également inclure le canal alpha, ce qui donnerait #AARRGGBB. En décimal/déni (base 10), les canaux R, G, B vont chacun de 0 à 255 tandis que le canal alpha va de 0 à 100, donc si je voulais utiliser l'échantillon de couleur que vous avez fourni avec une opacité de 50%, tout ce dont j'ai besoin faire est quelque chose comme:
<solid Android:color="#50C0C0C0"/>
où 50 est le pourcentage d'opacité dont vous avez besoin. Pour une option entièrement opaque, c'est-à-dire une opacité de 100%, vous n'avez pas besoin d'utiliser # FFC0C0C0 ou # 100C0C0C0 (Remarque: cela ne montrerait rien). Laissez-le simplement à la place # C0C0C0.