了解 Android 上的颜色(六个字符)
我想了解 Android 中颜色的工作原理。我将此颜色设置为我的 LinearLayout
的背景,并且得到具有一定透明度的灰色背景:
<gradient android:startColor="#b4555555" android:endColor="#b4555555"
android:angle="270.0" />
如果删除最后两个字符 (55),我会得到纯色,失去透明度。我试图找到一个页面,在那里我可以看到一些关于此的解释,但我找不到它。
I am trying to understand how colors work in Android. I have this color set as the background of my LinearLayout
, and I get a background gray with some transparency:
<gradient android:startColor="#b4555555" android:endColor="#b4555555"
android:angle="270.0" />
If I remove the last two characters (55) I get a solid color, losing the transparency. I was trying to find a page where I can see some explanation about this, but I couldn't find it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
Android 使用十六进制 ARGB 值,其格式为#AARRGGBB。第一对字母 AA 代表 Alpha 通道。您必须将十进制不透明度值转换为十六进制值。步骤如下:
Alpha 十六进制值处理
这就是找到 Alpha 通道值的方法。我冒昧地为您列出了一份价值观清单。享受!
十六进制不透明度值
Android uses hexadecimal ARGB values, which are formatted as #AARRGGBB. That first pair of letters, the AA, represent the alpha channel. You must convert your decimal opacity values to a hexadecimal value. Here are the steps:
Alpha Hex Value Process
That's how you find the alpha channel value. I've taken the liberty to put together a list of values for you. Enjoy!
Hex Opacity Values
离开@BlondeFurious的答案,这里有一些 Java 代码,用于获取从 100% 到 0% alpha 的每个十六进制值:
输出:
JavaScript 版本如下:
您也可以直接用 Google 搜索“数字到十六进制”,其中“数字”是 0 到 255 之间的任何值。
Going off the answer from @BlondeFurious, here is some Java code to get each hexadecimal value from 100% to 0% alpha:
Output:
A JavaScript version is below:
You can also just Google "number to hex" where 'number' is any value between 0 and 255.
如果您提供 6 个十六进制数字,则表示 RGB(红、绿、蓝各值各 2 个十六进制数字)。
如果您提供 8 个十六进制数字,则它是 ARGB(分别对应 alpha、红色、绿色和蓝色的每个值 2 个十六进制数字)。
因此,通过删除最后的 55,您将从 A=B4、R=55、G=55、B=55(大部分透明的灰色)更改为 R=B4、G=55、B=55(完全非- 透明暗色小指)。
有关支持的格式,请参阅“颜色”文档。
If you provide 6 hex digits, that means RGB (2 hex digits for each value of red, green and blue).
If you provide 8 hex digits, it's an ARGB (2 hex digits for each value of alpha, red, green and blue respectively).
So by removing the final 55 you're changing from A=B4, R=55, G=55, B=55 (a mostly transparent grey), to R=B4, G=55, B=55 (a fully-non-transparent dusky pinky).
See the "Color" documentation for the supported formats.
注意:此答案可能不是最新的 Material Design 规范。
Android Material Design
这些是用于设置文本颜色不透明度级别的转换。
浅色背景上的深色文本
DE000000
8A000000
61000000
1F000000
深色背景上的白色文本
< /a>
FFFFFFFF
B3FFFFFF
80FFFFFF
1FFFFFFF
代码>Note: This answer may not be up-to-date with current material design specs.
Android Material Design
These are the conversions for setting the text color opacity levels.
Dark text on light backgrounds
DE000000
8A000000
61000000
1F000000
White text on dark backgrounds
FFFFFFFF
B3FFFFFF
80FFFFFF
1FFFFFFF
在 Android 上,颜色可以指定为 RGB 或 ARGB。
http://en.wikipedia.org/wiki/ARGB
在 RGB 中,您有两个字符每种颜色(红、绿、蓝),在 ARGB 中,您还有两个额外的 alpha 通道字符。
因此,如果有 8 个字符,则它是 ARGB,前两个字符指定 Alpha 通道。如果删除前两个字符,它只是 RGB(纯色,没有 Alpha/透明度)。如果要在 Java 源代码中指定颜色,则必须使用:
参考:argb
On Android, colors are can be specified as RGB or ARGB.
http://en.wikipedia.org/wiki/ARGB
In RGB you have two characters for every color (red, green, blue), and in ARGB you have two additional chars for the alpha channel.
So, if you have 8 characters, it's ARGB, with the first two characters specifying the alpha channel. If you remove the leading two characters it's only RGB (solid colors, no alpha/transparency). If you want to specify a color in your Java source code, you have to use:
Reference: argb
8 位十六进制颜色值表示 ARGB(Alpha、红色、绿色、蓝色),而 6 位值仅假定 100% 不透明度(完全不透明)并仅定义 RGB 值。因此,要使其完全不透明,您可以使用#FF555555,或仅使用#555555。每个 2 位十六进制值都是一个字节,代表 0-255 之间的值。
An 8-digit hex color value is a representation of ARGB (Alpha, Red, Green, Blue), whereas a 6-digit value just assumes 100% opacity (fully opaque) and defines just the RGB values. So to make this be fully opaque, you can either use #FF555555, or just #555555. Each 2-digit hex value is one byte, representing values from 0-255.
使用这个表(我更喜欢把它放在colors.xml中以便快速搜索)
Use this table (I prefer to put it in colors.xml for fast search)
在新的chrome版本(可能是67.0.3396.62),CSS十六进制颜色可以使用此模型显示,
例如:
cc是不透明度,但旧的chrome不支持该模式
at new chrome version (maybe 67.0.3396.62) , CSS hex color can use this model display,
eg:
cc is opacity , but old chrome not support that mod
在 Android 上,颜色可以用以下格式声明:
AA
- 这是我们最感兴趣的部分,它代表 alpha 通道RR
GG
BB
- 红色、绿色和分别为蓝色通道现在,为了增加颜色的透明度,我们需要在其前面添加代表 alpha(透明度)的十六进制值。
例如,如果您想将 80% 透明度值设置为黑色 (
#000000
),则需要在其前面添加CC
,因此我们最终会得到以下颜色资源#CC000000
。您可以在我的博客上阅读更多详细信息
https://androidexplained.github。 io/android/ui/2020/10/12/hex-color-code-transparency.html
On Android the color can be declared in the following format
AA
- is the bit that’s of most interest to us, it stands for alpha channelRR
GG
BB
- red, green & blue channels respectivelyNow in order to add transparency to our color we need to prepend it with hexadecimal value representing the alpha (transparency).
For example if you want to set 80% transparency value to black color (
#000000
) you need to prepend it withCC
, as a result we end up with the following color resource#CC000000
.You can read about it in more detail on my blog
https://androidexplained.github.io/android/ui/2020/10/12/hex-color-code-transparency.html
十六进制代码的颜色写为
# AA RR GG BB
# Alpha 红色 绿色 蓝色
对于每个组(AA、RR、GG、BB),可能的值为:
-> 十六进制的 00 到 FF ,即十进制的 0 到 255
因此要更改颜色的 Alpha/AA/透明度,只需更改前两个十六进制AA组代表的十六进制字符串中的字符
50% ->
255 x 0.50= 128(大约/四舍五入)
并转换
128 转十六进制
= 08
所以绿色 #00FF00 和 50% Alpha/透明度 将是 #0800FF00
A color in hexadecimal code is written as
# AA RR GG BB
# Alpha Red Green Blue
And for each group (AA,RR,GG,BB) possible values are :
-> 00 to FF in Hex , i.e. 0 to 255 in decimal
So to change the Alpha/AA/Transparency of the color, you just have to change first two Hexadecimal Characters in the Hex String which is represented by the AA group
For 50% ->
255 x 0.50= 128 (approx/rounded)
And convert
128 to Hex
= 08
So Green #00FF00 with 50% Alpha/Transparency will be #0800FF00