颜色透明度转换技术文档(Android/Compose)

颜色透明度转换技术文档(Android/Compose)

1. 核心转换原理

透明度在十六进制中由 00(全透明)到 FF(不透明)表示。将百分比转换为十六进制的公式如下:

计算步骤:

  1. 百分比转小数:40%→0.440\% \rightarrow 0.440%→0.4
  2. 乘以 255:255×0.4=102255 \times 0.4 = 102255×0.4=102
  3. 转十六进制:102102102 的十六进制是 66

结果: #D9D9D9 的 40% 透明度版本即在色值对应位置加上 66。

2. 常见透明度速查表

开发时建议直接引用以下常用值,无需重复计算:

透明度百分比 十六进制 (Hex) 对应 Float (Compose)
100% FF 1.0f
80% CC 0.8f
75% BF 0.75f
50% 80 0.5f
40% 66 0.4f
20% 33 0.2f
10% 1A 0.1f
0% 00 0.0f

3. 平台差异与排列顺序

🟢 Android XML (colors.xml)

严格采用 #AARRGGBB 格式(Alpha 在最前)。

  • 写法:<color name="gray_40">#66D9D9D9</color>

🔵 Compose Color 对象

直接使用十六进制整数时,顺序也是 0xAARRGGBB。

  • 错误写法:Color(0xD9D9D966) ❌ (系统会将 D9 识别为透明度)
  • 正确写法:Color(0x66D9D9D9)

4. 最佳实践:Compose "保命"写法

为了避免因记忆 ARGB 或 RGBA 顺序出错,或者在从 Figma(通常 Alpha 在后)拷贝色值时翻车,强烈建议使用 .copy() 方法:

kotlin 复制代码
// 这种写法永远不会错,且可读性最高
val myColor = Color(0xFFD9D9D9).copy(alpha = 0.4f)

为什么推荐这种写法?

  1. 语义清晰:一眼就能看出基础色是 D9D9D9,透明度是 0.4。
  2. 减少计算:不需要去查表找 40% 对应的十六进制是 66。
  3. 动态友好:方便在代码中根据逻辑动态调整透明度(例如:color.copy(alpha = if(isPressed) 0.5f else 1.0f))。

5. 注意事项

  • 不写满 8 位会怎样? 在 Compose 中写 Color(0xD9D9D9) 会被视为 0x00D9D9D9,即全透明,导致 UI 隐形。
  • Figma 拷贝:Figma 导出的十六进制通常是 RRGGBBAA(透明度在后),直接粘贴到代码中必须手动将后两位移到最前面,或使用 .copy() 重新定义。
相关推荐
私人珍藏库3 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
researcher-Jiang4 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
alexhilton4 小时前
Kotlin DSL深度解析:从Gradle脚本到构建你自己的DSL
android·kotlin·android jetpack
烽火聊员5 小时前
查看Android Studio错误日志
android·ide·android studio
星空语10 小时前
音频001_Android+Linux车载/手机音频全链路分层架构图
android·linux·音视频
CyL_Cly11 小时前
解决官网下载慢!Android Studio 最新版网盘下载
android·ide·android studio
智塑未来11 小时前
鸿蒙系统对比安卓、iOS,核心优势是什么?
android·ios·harmonyos
AI刀刀11 小时前
豆包智能体对话导出后,如何构建长期归档与高效检索体系?
android·人工智能·word·excel·ai导出鸭
初雪云12 小时前
iOS 上架入门:证书、描述文件、IPA 上传到底是什么关系?
android·ios·自动化·产品经理·iphone
玩机达人8815 小时前
一加12/Ace5/Ace3pro手机ColorOS16降级回锁BL熔断变黑砖怎么办
android·智能手机·电脑