Android ARGB 颜色透明度对照表

455 阅读5分钟

Android ARGB 颜色透明度对照表

1. 背景

在 Android 开发中,颜色由 ARGB(Alpha、Red、Green、Blue)四个通道组成,其中 Alpha(透明度) 控制颜色的透明程度:

  • 0x00 = 完全透明
  • 0xFF = 完全不透明

透明度在 UI 渲染、过渡动画、遮罩层、Compose 组件绘制 等场景中使用广泛。

2. 颜色格式表示

2.1 ARGB 十六进制表示

Android 常用 #AARRGGBB 格式定义颜色:

  • AA = Alpha 通道(透明度)
  • RR = 红色通道
  • GG = 绿色通道
  • BB = 蓝色通道

示例:

<!-- 完全不透明的红色 -->
#FFFF0000

<!-- 半透明红色 (50%) -->
#80FF0000

<!-- 完全透明 (无颜色) -->
#00FFFFFF

⚠️ 注意:如果省略透明度,Android 默认透明度为 FF(完全不透明),即 #RRGGBB 等价于 #FFRRGGBB。

2.2 使用 Color.argb()

通过代码动态设置颜色:

val red50 = Color.argb(128, 255, 0, 0) // 半透明红色 (Alpha=128)

参数说明:

  • 第一个参数:alpha,范围 0~255
  • 其余三个:red, green, blue,范围同样是 0~255

2.3 使用 ColorUtils.setAlphaComponent()

如果已经有颜色值,可以单独修改透明度:

import androidx.core.graphics.ColorUtils

val baseColor = Color.RED
val newColor = ColorUtils.setAlphaComponent(baseColor, 128) // 设置为 50% 透明

3. 在 View 系统中的透明度

3.1 背景半透明

<View
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#80000000" /> <!-- 半透明黑色遮罩 -->

3.2 文字透明度

textView.setTextColor(Color.argb(128, 255, 255, 255)) // 半透明白色

3.3 图片透明度

imageView.imageAlpha = 128 // 0-255

3.4 View 整体透明度

view.alpha = 0.5f // 范围 0.0f ~ 1.0f

📌 区别:

  • setTextColor(Color.argb()) → 改变文字本身颜色透明度
  • view.alpha → 改变整个 View(包含子控件)的透明度

4. 在 Jetpack Compose 中的透明度

4.1 使用 Color.copy(alpha = …)

Box(
  modifier = Modifier
    .size(100.dp)
    .background(Color.Red.copy(alpha = 0.5f)) // 50% 透明
)

4.2 使用 Modifier.alpha()

Text(
  text = "半透明文字",
  modifier = Modifier.alpha(0.3f), // 30% 透明
  color = Color.White
)

4.3 使用 graphicsLayer

Image(
  painter = painterResource(id = R.drawable.avatar),
  contentDescription = null,
  modifier = Modifier.graphicsLayer(alpha = 0.7f) // 70% 透明
)

4.4 动画透明度

val alpha by animateFloatAsState(targetValue = 0.5f)
Box(
  modifier = Modifier
    .size(120.dp)
    .graphicsLayer(alpha = alpha)
    .background(Color.Blue)
)

5. 常见透明度值速查表

透明度百分比十进制值十六进制值
0% [完全透明]000
1%303
2%505
3%808
4%100A
5%130D
6%150F
7%1812
8%2014
9%2317
10%261A
11%281C
12%311F
13%3321
14%3624
15%3826
16%4129
17%432B
18%462E
19%4830
20%5133
21%5436
22%5638
23%593B
24%613D
25%6440
26%6642
27%6945
28%7147
29%744A
30%764C
31%794F
32%8252
33%8454
34%8757
35%8959
36%925C
37%945E
38%9761
39%9963
40%10266
41%10569
42%1076B
43%1106E
44%11270
45%11573
46%11775
47%12078
48%1227A
49%1257D
50%12880
51%13082
52%13385
53%13587
54%1388A
55%1408C
56%1438F
57%14591
58%14894
59%15096
60%15399
61%1569C
62%1589E
63%161A1
64%163A3
65%166A6
66%168A8
67%171AB
68%173AD
69%176B0
70%178B2
71%181B5
72%184B8
73%186BA
74%189BD
75%191BF
76%194C2
77%196C4
78%199C7
79%201C9
80%204CC
81%207CF
82%209D1
83%212D4
84%214D6
85%217D9
86%219DB
87%222DE
88%224E0
89%227E3
90%230E6
91%232E8
92%235EB
93%237ED
94%240F0
95%242F2
96%245F5
97%247F7
98%250FA
99%252FC
100% [完全不透明]255FF

6. 注意事项

  • 1)性能问题:过度使用半透明层可能导致绘制开销增大,尤其在低端设备上。
  • 2)叠加效果:多个透明层叠加时,透明度会叠加计算,可能出现预期外的效果。
  • 3)硬件加速:部分透明渲染在关闭硬件加速时可能性能较差。
  • 4)Material Design 建议:推荐使用半透明黑(如 #80000000)或白(如 #80FFFFFF)作为遮罩色,保证统一的 UI 效果。

7. 总结

  • View 系统与 Compose 都支持透明度设置。
  • 透明度可通过 alpha 通道Modifier.alpha() 实现。
  • 透明度速查表可帮助快速选择合适的透明值。