创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红,蓝,绿,黑,白,灰,青,品红,黄,银,蓝绿色