如何从十六进制颜色中获取颜色字符串
我想使用六进制字符串中的颜色(如"#FFFF0000"
)来(例如)更改布局的背景颜色。 Color.HSVToColor
看起来像赢家,但它需要float[]
作为参数。如何从十六进制颜色中获取颜色字符串
我靠近解决方案吗?
尝试Color
类方法:
public static int parseColor (String colorString)
从Android文档:
支持的格式有:#RRGGBB #AARRGGBB '红', '蓝', '绿', '黑', “白色”,“灰色”,“青色”,“品红”,“黄”,“浅灰色”,“深灰”
任何人都知道如何解析'#000'值? – 2015-01-09 10:14:46
是的,只需要:'''if(colorString.length()== 4){colorString =“#”+ StringUtils.repeat(colorString.substring(1,1),1)+ StringUtils.repeat(colorString.substring (2,2),1)+ StringUtils.repeat(colorString.substring(3,3),1)}''',请纠正我,如果我错了 – xdevs23 2015-12-12 11:46:19
要添加到@ xdevs23代码,将if条件更改为此:'if(colorString.length()== 4 && colorString [0] =='#')' – Zac 2016-01-11 19:40:47
该字符串转换为int
颜色可以在0123可以使用和setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16意味着它是十六进制的,而不是你的正常0-9。结果应该与
int color = 0xFFFF0000;
如何转换String color =“80000000”;以int color =? – 2014-05-24 01:01:08
我认为字符串版本aught是'#80000000',在这种情况下int版本是'int color = 0x80000000;'。如果这不起作用,那么发布[新问题](http://*.com/questions/ask)以获得更多详细信息,这样比我更多的人会注意到它。请记住'#80000000'是一种半透明的黑色。 – 2014-05-24 13:01:51
我知道int将int color = 0x80000000,但我的问题是如何转换它...但现在我会解决我的问题自我与int color = parseColor(“#”+“80000000”); ...感谢回复。 – 2014-05-24 13:12:03
尝试使用0xFFF000,而不是将其传递给Color.HSVToColor方法。
我认为你应该用零代替第三个F。在OP中,我认为前两个F字符用于设置不透明度。 – 2011-03-09 16:14:54
我使用这个,它对我设置任何颜色我很好。
public static final int MY_COLOR = Color.rgb(255, 102, 153);
设置使用0-255的颜色各红色,绿色和蓝色,然后任何你想要的颜色使用的只是把my_color的,而不是Color.BLUE或Color.RED或任何其他静态颜色Color类的提供。
只要做一个谷歌搜索彩色图表,它可以找到一个图表,使用0-255正确的RGB代码。
尝试:在保存RES /价值/颜色
myLayout.setBackgroundColor(Color.parseColor("#636161"));
如果您使用xamarin ..代码是这个Android.Graphics.Color.ParseColor(“#636161”)与“P”的上限 – 2017-02-12 23:52:41
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"/>
如果您在XML定义颜色和想用它来改变背景颜色或者这个API是你正在寻找的那个:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
在我的示例我用了TestView
试试这个:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
这是
int color = Color.parseColor("colorstring");
这个问题出现了许多相关的十六进制颜色,所以我会搜索在这里添加一个总结。
从int
六角颜色颜色采取的形式RRGGBB
或AARRGGBB
(α,红,绿,蓝)。根据我的经验,当直接使用int
时,您需要使用完整的AARRGGBB
表单。如果您只有RRGGBB
表格,那么只需将其前缀FF
以使Alpha(透明度)完全不透明。这里是你如何在代码中设置它。在开始使用0x
意味着它是十六进制,而不是基地10
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
颜色从字符串
正如其他人所指出的那样,你可以使用Color.parseString
像这样
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
注意字符串必须以#
开头。支持RRGGBB
和AARRGGBB
格式。
来自XML的颜色
您应该尽可能从XML获取颜色。这是推荐的选项,因为它使得更容易对应用程序进行颜色更改。如果你在你的代码中设置了很多十六进制颜色,那么稍后尝试改变它们是一件很痛苦的事情。
Android材料设计具有已配置的十六进制值的颜色调色板。
这些主题颜色在整个你的应用程序中使用,并期待这样的:
颜色。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两个步骤来定义你的颜色。首先命名十六进制值的颜色,然后命名应该获得某种颜色的应用程序组件。这使得以后很容易调整颜色。再次,这是在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
- 查找十六进制颜色的快速方法是在Gimp(或某些其他照片编辑软件)中打开颜色选择器对话框。
- Standard opacity levels in Material Design
在Xamarin 使用此
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
[在运行时转换的Android颜色字符串转换成int]的可能的复制(http://*.com/questions/3849607/converting-android -color-string-in-runtime-into-int) – 2016-02-25 05:50:34