创build一个新的颜色drawable
我试图将一个hex值转换为一个int,所以我可以创build一个新的颜色绘制。 我不确定这是否可能,但根据文件,它应该。 它明白地要求
public ColorDrawable(int color)
在API级别1中添加使用指定的颜色创build一个新的ColorDrawable。
参数 color要绘制的颜色。
所以,我的代码不工作,因为我得到一个无效的int:“FF6666”错误。 有任何想法吗?
int decode = Integer.decode("FF6666"); ColorDrawable colorDrawable = new ColorDrawable(decode);
既然你在谈论hex,你必须以0x
,不要忘记不透明。
所以基本上是: 0xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
你也可以在/ res中创build一个新的colors.xml文件,并定义颜色:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="mycolor">#FF6666</color> </resources>
只需获取在R.color.mycolor中定义的颜色
getResources().getColor(R.color.mycolor)
应该是这样的…
ColorDrawable cd = new ColorDrawable(0xffff6666);
注意我使用了8位hex数字,而不是6位数字。 这增加了透明度
为了使用ContextCompat并重新调整颜色,你可以这样做:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
我认为你必须使用:
public static int parseColor(String colorString)
在API级别1中添加parsing颜色string,并返回相应的color-int。 如果string不能被parsing,则抛出一个IllegalArgumentExceptionexception。 支持的格式有:#RRGGBB #AARRGGBB红,蓝,绿,黑,白,灰,青,品红,黄,银,蓝绿色