Android 颜色设置:透明度换算

本文详细介绍了Android中颜色值的表示方法,包括ARGB各部分的意义、颜色与透明度的表示方式,并提供了如何从UI给定的颜色值和透明度百分比转换为Android可用的ARGB颜色值的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

#开头色值

Android中的颜色值通常遵循RGB/ARGB标准,使用时通常以“#”字符开头,以16进制表示。比如程序中用到的:android:textColor=”#F8FF00” , 常用的颜色值格式为:

#RGB  
#ARGB  
#RRGGBB  
#AARRGGBB 

其中,ARGB 依次代表透明度(alpha)、红色(red)、绿色(green)、蓝色(blue)。
以颜色值 #FF99CC00 为例,其中,FF 是透明度,99 是红色值, CC 是绿色值, 00 是蓝色值。

代码中的色值

在android中经常看到设置的颜色为八位的十六进制的颜色值,例如:

public static final class color {
    public static final int lightblue=0x7f040000;
}

或者在 Java 中

textView.setTextColor(0xffff00f);

说明:

  • 0xffff00ff 是 int 类型的数据,分组一下 0x|ff|ff00ff0x 表示颜色整数的标记,ff表示透明度,ff00ff表示色值,注意:0x后面ffff00ff必须是8位的颜色表示

  • 颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0到 255(00到 ff)。

  • 对于 alpha,00表示完全透明,ff表示完全不透明。

  • 表达式顺序是”aabbggrr”,其中”aa=alpha”(00到ff);”bb=blue”(00到ff);”gg=green”(00到ff);”rr=red”(00到ff)。


透明度

  • 透明度分为256阶(0-255),计算机上用16进制表示为(00-ff)。透明就是0阶,不透明就是255阶,如果50%透明就是127阶(256的一半当然是128,但因为是从0开始,所以实际上是127)。

  • 透明度 和 不透明度 是两个概念, 它们加起来是1,或者100%.

  • ARGB 中的透明度alpha,表示的是不透明度。依据来自维基百科中的定义。


换算

在开发过程中,UI/UE给的标注图上,所有颜色值是RGB,但是透明度经常都是百分比,例如:颜色值:#FFFFFF,透明度40%。
使用过程中我们需要进行换算。以之前的值为例,换算过程如下:

  • 将透明度转换成不透明度(转换方式参考“透明度”,第2条) 。 不透明度为60%

  • 不透明度乘以255。 我们得到结果:153

  • 将计算结果转换成16进制。得到最终的不透明度:99

  • 将不透明度和颜色值拼接成ARGB格式。得到最终的颜色值: #99FFFFFF


常用不透明度对应十六进制值

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 
Android中,透明度是通过ARGB格式来表示的。其中,A代表透明度值。透明度的计算可以通过以下步骤进行:首先,将透明度转换成不透明度,然后将不透明度乘以255,接着将计算结果转换成16进制,并最后将不透明度颜色值拼接成ARGB格式。这样就得到了最终的颜色值。 如果你在开发过程中遇到了视觉稿中标了透明度颜色值太透明的情况,可以通过透明度换算来进行调整。 举个例子,如果透明度是40%,你可以先将其转换成不透明度,然后将不透明度乘以255,再将计算结果转换成16进制,最终将不透明度颜色值拼接在一起就得到了最终的颜色值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [最全的Android 颜色透明度](https://blog.youkuaiyun.com/hewuzhao/article/details/78821954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [android 透明度](https://blog.youkuaiyun.com/yzpbright/article/details/78909302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值