如何从hex颜色string中获取颜色
我想使用一个像"#FFFF0000"
这样的hexastring的颜色来(比如说)改变Layout的背景颜色。 Color.HSVToColor
看起来像一个胜利者,但它需要一个float[]
作为参数。
我有没有接近解决scheme呢?
尝试Color
类的方法:
public static int parseColor (String colorString)
从Android文档:
支持的格式是:#RRGGBB #AARRGGBB“红”,“蓝”,“绿”,“黑”,“白”,“灰”,“青”,“品红”,“黄”,“浅灰色” “
尝试:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
将该string转换为可在setBackgroundColor
和setTextColor
使用的int
颜色
String string = "#FFFF0000"; int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16表示它是hex的,而不是常规的0-9。 结果应该是一样的
int color = 0xFFFF0000;
它的
int color = Color.parseColor("colorstring");
尝试这个:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
我使用这个,它对我设置任何颜色我很想。
public static final int MY_COLOR = Color.rgb(255, 102, 153);
使用0-255为每个红色,绿色和蓝色设置颜色,然后在希望使用该颜色的任何位置放置MY_COLOR而不是Color.BLUE或Color.RED或Color类提供的其他任何静态颜色。
只要做一个谷歌search颜色图表,它可以find一个正确的RGB代码使用0-255的图表。
这个问题出现了一些与hex颜色相关的search,所以我将在这里添加一个摘要。
来自int的颜色
hex颜色采取formsRRGGBB
或AARRGGBB
(阿尔法,红色,绿色,蓝色)。 根据我的经验,直接使用int
,需要使用完整的AARRGGBB
表单。 如果你只有RRGGBB
forms,那么只需在FF
前面加上alpha(透明)就完全不透明了。 这里是你如何设置代码。 在开头使用0x
表示hex,而不是十进制。
int myColor = 0xFF3F51B5; myView.setBackgroundColor(myColor);
string的颜色
正如其他人所指出的,你可以像使用Color.parseString
一样
int myColor = Color.parseColor("#3F51B5"); myView.setBackgroundColor(myColor);
请注意,string必须以#
开头。 支持RRGGBB
和AARRGGBB
格式。
来自XML的颜色
你应该尽可能地从XML中获取你的颜色。 这是推荐的选项,因为它使得更改颜色到您的应用程序更容易。 如果你在你的代码中设置了很多hex颜色,那么稍后尝试改变它们是一个很大的麻烦。
Android材质devise使用已configuration的hex值进行颜色调整。
- 材料devise颜色造型
- 材料devise调色板生成器
这些主题颜色在整个应用程序中使用,如下所示:
colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="primary">#3F51B5</color> <color name="primary_dark">#303F9F</color> <color name="primary_light">#C5CAE9</color> <color name="accent">#FF4081</color> <color name="primary_text">#212121</color> <color name="secondary_text">#757575</color> <color name="icons">#FFFFFF</color> <color name="divider">#BDBDBD</color> </resources>
如果你需要额外的颜色,最好的做法是在xml中分两步定义你的颜色。 首先命名hex值的颜色,然后命名应该得到一定颜色的应用程序的组件。 这使得以后可以很容易地调整颜色。 再次,这是在colors.xml 。
<color name="orange">#fff3632b</color> <color name="my_view_background_color">@color/orange</color>
然后,当您想要在代码中设置颜色时,请执行以下操作:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color); myView.setBackgroundColor(myColor);
Android预定义的颜色
Color类带有许多预定义的颜色常量。 你可以像这样使用它。
int myColor = Color.BLUE; myView.setBackgroundColor(myColor);
其他颜色是
-
Color.BLACK
-
Color.BLUE
-
Color.CYAN
-
Color.DKGRAY
-
Color.GRAY
-
Color.GREEN
-
Color.LTGRAY
-
Color.MAGENTA
-
Color.RED
-
Color.TRANSPARENT
-
Color.WHITE
-
Color.YELLOW
笔记
- findhex颜色的一个快速方法是打开Gimp(或其他一些照片编辑软件)中的颜色select器对话框。
- 材料devise中的标准不透明度水平
保存在res / values / colors.xml中的XML文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <color name="translucent_red">#80ff0000</color> </resources>
这个应用程序代码检索颜色资源:
Resources res = getResources(); int color = res.getColor(R.color.opaque_red);
此布局XML将颜色应用于属性:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/>
尝试使用0xFFF000,并将其传递到Color.HSVToColor方法。
如果你在你的XML中定义了一个颜色,并且想用它来改变背景颜色或者这个API是你正在寻找的那个:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
在我的示例中,我将它用于TestView
在Xamarin中使用这个
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));