如何在Android上使背景透明度为20%

722

如何使带有背景颜色(例如白色)的Textview的背景大约透明20%(不是完全透明)?


必须查看此链接 https://dev59.com/wmUo5IYBdhLWcg3wrhBD - Arun Badole
19个回答

1709

以下代码可用于黑色:

<color name="black">#000000</color>

现在如果我想使用不透明度,您可以使用以下代码:

 <color name="black">#99000000</color> <!-- 99 is for alpha and others pairs zero's are for R G B -->

以下是透明度代码: 以及所有透明度级别

十六进制透明度值

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

如果您经常忘记如何编写透明代码,那么您必须查看下面的链接,并且不用担心记住任何关于透明代码的内容:

https://github.com/duggu-hcd/TransparentColorCode

textviewHeader.setTextColor(Color.parseColor(ColorTransparentUtils.transparentColor(R.color.border_color,10)));

3
看到这个,我使用了 #99ffffff,效果很好,谢谢。 - nawaab saab
如何将此规则应用于带有图像的背景? - user1090751
1
值得注意的是,这些值是透明度值,而不是不透明度值。 - BlackHatSamurai
我是唯一一个被透明度的前两位数字困扰的人吗?应该是后两位... - adrien le coarer

1113

将颜色的 alpha 通道设置为 80%。例如,对于红色使用 #CCFF0000

<TextView
   ...
   android:background="#CCFF0000" />
在这个例子中,CC 是十六进制表示法下 255 * 0.8 = 204 的数值,注意前两位十六进制数字是用来表示 alpha 通道的。格式为 #AARRGGBB,其中 AA 为 alpha 通道,RR 为红色通道,GG 为绿色通道,BB 为蓝色通道。
我假设你的意思是透明度为20%,不透明度为80%。如果你的意思相反,请使用十六进制数字 33,它表示 255 * 0.2 = 51
为了计算合适的 alpha 透明度数值,你可以按照以下步骤进行:
  1. 给定一个透明度百分比,例如20%,你知道不透明百分比是80%(即 100-20=80
  2. alpha 通道的范围为8位(2^8=256),也就是说它的范围从0到255。
  3. 将不透明度百分比映射到 alpha 范围内,也就是要将该范围(255)乘以该百分比。在这个例子中,255 * 0.8 = 204。如果需要,取最近的整数。
  4. 将步骤3中得到的十进制数值转换为十六进制(基数为16)。你可以使用 Google 或任何计算器进行转换。在 Google 中输入“204 to hexa”,它会给出该十进制数值的十六进制表示。在这个例子中,它是 0xCC
  5. 将步骤4中得到的值添加到所需颜色的前面。例如,对于红色,即 FF0000,你将得到 CCFF0000
你可以查看 Android 颜色文档

1
对于带有透明度的 _白色_,根据问题,使用 android:background="#CCFFFFFF" - gotwo
如何将此规则应用于带有图像的背景? - user1090751

183
您可以通过修改颜色定义中的前两个字符来管理颜色的不透明度:

#99000000

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
这对现有答案有什么补充? - Code-Apprentice
8
@Code-Apprentice 我认为这个答案在你需要更细致透明度时是有用的,比如像https://material.google.com/style/color.html#color-color-schemes 中提到的87%或54%。 - Bruce
5
好的,昨天我需要处理一个13%的alpha值,所以我决定将我的搜索结果添加到这个有用的帖子中。 - carlol
如果我想让LinearLayout完全透明而没有任何颜色,该怎么做? - Si8
1
所有视图默认都是透明的,如果您必须出于某些原因强制设置背景透明,您可以在代码中使用mLinearLayout.setBackgroundColor(Color.TRANSPARENT)或在xml中使用android:background="@android:color/transparent"(显然,此颜色不会被子视图继承)。 - carlol

116

使用带有 alpha 值的颜色,例如 #33------,并将其设置为您的 editText 的背景,使用 XML 属性 android:background=" "

  1. 0%(透明)-> 十六进制 #00
  2. 20% -> #33
  3. 50% -> #80
  4. 75% -> #C0
  5. 100%(不透明)-> #FF

255 * 0.2 = 51 → 转换成十六进制即为 33


114
你可以尝试这样做:
textView.getBackground().setAlpha(51);

您可以在此处将不透明度设置为0(完全透明)到255(完全不透明)。51正是您想要的20%。


17
@koti,因为你的 textView 变量是 null - yugidroid
很优雅的解决方案。当我选择一个列表项时,我可以将其应用于背景,这样我就能得到一些颜色,但它不会与项目文本竞争。非常酷,谢谢! - Gene Bo
setAlpha(int)已被弃用,建议使用setAlpha(float),其中0代表完全透明,1代表完全不透明。myImage.setAlpha(0.5f); - polmabri
@polmabri,不完全是这样。myImage.setAlpha(0.5f);将alpha应用于View本身,但我在答案中展示的是应用于View的背景可绘制对象。 - yugidroid
这可能会导致图形错误!请谨慎使用并进行大量测试。 - Michael
当应用于按钮时,我喜欢这个不会在你按住按钮时破坏“发光”材料设计效果。我发现改变其他任何东西,比如颜色或背景资源,都会破坏这种效果。这是一个优雅的编程解决方案。 - Androidcoder

84

我们也可以用这种方式来制作透明效果。

白色代码 - FFFFFF

20%的白色 - #33FFFFFF

20% — 33

70%的白色 - #B3FFFFFF

70% — B3

所有十六进制值从100%到0%

**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
非常棒的答案。继续保持。 - Tarun Deep Attri
1
这个图表非常方便! - Mahendra Liya

40

所有十六进制值从100%到0%的透明度,您可以使用以下透明度值设置任何颜色。例如#FAFFFFFF(AARRGGBB)

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

38

查看截图

我创建了三个视图。在第一个视图中,我设置了完整的颜色(没有透明度);在第二个视图中,我设定了半透明的颜色(透明度为0.5);在第三个视图中,我设定了浅色的颜色(透明度为0.2)。

您可以使用以下代码设置任何带有透明度的颜色:

文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center"
    android:orientation = "vertical"
    tools:context = "com.example.temp.MainActivity" >

    <View
        android:id = "@+id/fullColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip" />

    <View
        android:id = "@+id/halfalphaColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip"
        android:layout_marginTop = "20dip" />

    <View
        android:id = "@+id/alphaColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip"
        android:layout_marginTop = "20dip" />

</LinearLayout>

文件 MainActivity.java

public class MainActivity extends Activity {

    private View fullColorView, halfalphaColorView, alphaColorView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fullColorView = (View)findViewById(R.id.fullColorView);
        halfalphaColorView = (View)findViewById(R.id.halfalphaColorView);
        alphaColorView = (View)findViewById(R.id.alphaColorView);

        fullColorView.setBackgroundColor(Color.BLUE);
        halfalphaColorView.setBackgroundColor(getColorWithAlpha(Color.BLUE, 0.5f));
        alphaColorView.setBackgroundColor(getColorWithAlpha(Color.BLUE, 0.2f));
    }


    private int getColorWithAlpha(int color, float ratio) {
        int newColor = 0;
        int alpha = Math.round(Color.alpha(color) * ratio);
        int r = Color.red(color);
        int g = Color.green(color);
        int b = Color.blue(color);
        newColor = Color.argb(alpha, r, g, b);
        return newColor;
    }
}

Kotlin版本:

private fun getColorWithAlpha(color: Int, ratio: Float): Int {
  return Color.argb(Math.round(Color.alpha(color) * ratio), Color.red(color), Color.green(color), Color.blue(color))
}

完成


23

现在,Android Studio 3.3及更高版本提供了一个内置功能来改变颜色的Alpha值

只需在Android Studio编辑器中单击一个颜色,并提供百分比的Alpha值

有关更多信息,请参见下面的图像:

进入图片描述


19

有一个XML值alpha接受double值。

API 11+开始,范围从0f1f(包括两端),其中0f表示透明,1f表示不透明:

  • android:alpha="0.0" 表示完全不可见

  • android:alpha="0.5" 半透明

  • android:alpha="1.0" 完全可见

就是这样。


1
这将使整个布局半透明,包括其内容。 - jack_the_beast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接