2013-05-17 132 views
22

我需要設置一個不透明度值爲xml drawable中的顏色。但是,當我嘗試添加不透明度(#20C0C0C0)的兩個值,例如,不工作。顏色完全透明。如何將alpha/opacity值設置爲xml drawable上的顏色?

這裏是我的代碼...

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

人有一個想法? 感謝您的幫助。

+1

與此CDCDCD你有一個不透明的顏色。前兩個字節是alpha通道。 FF是最大的阿爾法00是最小值。 #00CDCDCD是完全透明的顏色 – Blackbelt

+2

[Shape Drawables](http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape)沒有alpha設置。 – TronicZomB

回答

54

顏色「出現」完全透明的B/C它幾乎完全透明。十六進制顏色通常是6位數字#RRGGBB,但是如果您想設置不透明度,則在開始時通過2位數字,因此在您的案例#20C0C0C0中,您的不透明度爲20.

在十六進制(基礎-16) :

  • 基地16 |基地10
  • 0 | 0(這是完全透明的)
  • 20 | 32(這是你的不透明度)
  • FF | 255(這是完全不透明的)

所以你的不透明度只有~12%。

如果你想它更不透明(透明度較低)使用一個較大的數字(7F會給你50%的不透明度)

所以:

<solid android:color="#7FC0C0C0" /> 
48

我可能是有點晚了,但如果有人來到這個帖子,並正在尋找一些alpha值。賈裏德Rummler所做的工作和provids我們每posibile值 https://stackoverflow.com/a/27813407/5973229

於是,他用這種方法來計算十六進制代碼每個不透明度值:

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)); 

然後這就是結果:

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 
+1

謝謝,它解決了我的問題 – murli

+2

感謝十六進制表<3 –

0

爲人們看到這個問題提供了一個更新的答案,後2018年。就我所見,在開發API版本>棒棒糖時,不需要使用十六進制值作爲alpha。我昨天檢查了這個,也很驚訝。

在android配色方案中,我們使用十六進制值作爲#FFFFFF中的白色。這表示所述顏色中的RGB通道。換句話說,正如@Cumulo Nimbus所述,#RRGGBB。

對於不透明度/透明度,您還需要包含alpha通道以及#AARRGGBB。在十進制/ denary(基數10)中,R,G,B通道每個範圍從0-255,而alpha通道範圍從0-100,所以如果我想使用您提供的顏色樣本50%不透明度,我只需要做是這樣的:

<solid android:color="#50C0C0C0"/> 

其中50是你需要的不透明度的百分比。對於完全不透明的選項,即100%不透明度,您不需要使用#FFC0C0C0或#100C0C0C0(注意:這不會顯示任何內容)。只需將其保留爲#C0C0C0即可。

相關問題