如何从十六进制颜色字符串获取颜色
我想使用十六进制字符串(例如 "#FFFF0000"
)中的颜色来(比如说)更改布局的背景颜色。 Color.HSVToColor
看起来像是赢家,但它需要一个 float[]
作为参数。
我已经接近解决方案了吗?
I'd like to use a color from an hexa string such as "#FFFF0000"
to (say) change the background color of a Layout.Color.HSVToColor
looks like a winner but it takes a float[]
as a parameter.
Am I any close to the solution at all?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
尝试
Color
类方法:来自 Android 文档:
AndroidX: String.toColorInt()
Try
Color
class method:From Android documentation:
AndroidX: String.toColorInt()
尝试:
Try:
这个问题出现在许多与十六进制颜色相关的搜索中,所以我将在这里添加一个摘要。
来自 int Hex 颜色的颜色
采用
RRGGBB
或AARRGGBB
形式(alpha、红、绿、蓝)。根据我的经验,直接使用int
时,您需要使用完整的AARRGGBB
形式。如果您只有RRGGBB
形式,则只需在其前面添加FF
即可使 Alpha(透明度)完全不透明。以下是在代码中设置它的方法。在开头使用0x
意味着它是十六进制而不是以 10 为基数。来自字符串的颜色
正如其他人所指出的,您可以像这样使用
Color.parseColor
请注意,字符串必须以开头带有
#
。支持RRGGBB
和AARRGGBB
格式。来自 XML 的颜色
实际上,只要有可能,您就应该从 XML 中获取颜色。这是推荐的选项,因为它可以更轻松地更改应用程序的颜色。如果您在代码中设置了很多十六进制颜色,那么以后尝试更改它们会很痛苦。
Android 材料设计具有已配置十六进制值的调色板。
这些主题颜色在整个应用程序中使用,如下所示:
colors.xml
如果您需要其他颜色,最好的做法是接下来是在 xml 中分两步定义颜色。首先命名十六进制值颜色,然后命名应用程序中应获得特定颜色的组件。这使得以后调整颜色变得容易。同样,这是在colors.xml中。
然后,当您想在代码中设置颜色时,请执行以下操作:
Android 预定义颜色
Color 类附带了许多预定义的颜色常量。你可以像这样使用它。
其他颜色为
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY< /code>
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT< /code>
Color.WHITE
Color.YELLOW
注释
This question comes up for a number of searches related to hex color so I will add a summary here.
Color from int
Hex colors take the form
RRGGBB
orAARRGGBB
(alpha, red, green, blue). In my experience, when using anint
directly, you need to use the fullAARRGGBB
form. If you only have theRRGGBB
form then just prefix it withFF
to make the alpha (transparency) fully opaque. Here is how you would set it in code. Using0x
at the beginning means it is hexadecimal and not base 10.Color from String
As others have noted, you can use
Color.parseColor
like soNote that the String must start with a
#
. BothRRGGBB
andAARRGGBB
formats are supported.Color from XML
You should actually be getting your colors from XML whenever possible. This is the recommended option because it makes it much easier to make color changes to your app. If you set a lot of hex colors throughout your code then it is a big pain to try to change them later.
Android material design has color palates with the hex values already configured.
These theme colors are used throughout your app and look like this:
colors.xml
If you need additional colors, a good practice to follow is to define your color in two steps in xml. First name the the hex value color and then name a component of your app that should get a certain color. This makes it easy to adjust the colors later. Again, this is in colors.xml.
Then when you want to set the color in code, do the following:
Android Predefined colors
The Color class comes with a number of predefined color constants. You can use it like this.
Other colors are
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Notes
将该字符串转换为可在
setBackgroundColor
和setTextColor
中使用的int
颜色。16 表示它是十六进制,而不是常规的 0-9。结果应该是一样的
Convert that string to an
int
color which can be used insetBackgroundColor
andsetTextColor
The 16 means it is hexadecimal and not your regular 0-9. The result should be the same as
它是
It's
试试这个:
Try this:
我用它,它非常适合我设置我想要的任何颜色。
使用 0-255 为每种红色、绿色和蓝色设置颜色,然后在您想要使用该颜色的任何地方只需放置 MY_COLOR 而不是 Color.BLUE 或 Color.RED 或 Color 类提供的任何其他静态颜色。
只需在 Google 上搜索颜色图表,您就可以找到包含使用 0-255 的正确 RGB 代码的图表。
I use this and it works great for me for setting any color I want.
Set the colors using 0-255 for each red, green and blue then anywhere you want that color used just put MY_COLOR instead of Color.BLUE or Color.RED or any of the other static colors the Color class offers.
Just do a Google search for color chart and it you can find a chart with the correct RGB codes using 0-255.
尝试此操作。
在 bg 是要为其设置背景颜色的视图或布局的情况下
Try this
where bg is a view or layout to which you want to set the background color.
在 Xamarin 中
用这个
In Xamarin
Use this
尝试改用 0xFFF000 并将其传递给 Color.HSVToColor 方法。
Try using 0xFFF000 instead and pass that into the Color.HSVToColor method.
如果您在 XML 中定义了一种颜色并希望使用它来更改背景颜色或其他内容,则此 API 就是您正在寻找的颜色:
在我的示例中,我将其用于 TestView
If you define a color in your XML and want to use it to change background color or something this API is the one your are looking for:
In my sample I used it for TestView
我已经创建了一个完整的答案:
用法:
希望它对某人有帮助
I Have created a Complete Answer :
Usage:
Hope it help somebody
对于缩短的十六进制代码
For shortened Hex code
没有预定义的类可以直接实现从十六进制代码到颜色名称,因此您要做的就是尝试简单的键值对概念,遵循此代码。
There is no pre-defined class to implement directly from hex code to color name so what you have to do is Try key value pair concept simple, follow this code.
用于kotlin扩展函数
For kotlin extension function
下面是一个用于
Jetpack Compose Color
用法的精致 Kotlin 扩展函数:
Here is a delicate Kotlin extension function for a
Jetpack Compose Color
Usage: