创建一个新的颜色drawable

时间:2013-10-16 15:35:07

标签: java android android-drawable colordrawable

我正在尝试将十六进制值转换为int,因此我可以创建一个新的颜色drawable。我不确定这是否可行,但根据documentation,它应该。它显然要求

  

public ColorDrawable(int color)

     

在API级别1中添加创建具有指定的新ColorDrawable   颜色。

     

参数 颜色要绘制的颜色。

所以,我的代码无效,因为我收到了一个Invalid int:“FF6666”错误。有什么想法吗?

int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);

6 个答案:

答案 0 :(得分:134)

由于你在谈论十六进制,你必须从0x开始,不要忘记不透明度。

所以基本上: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

您还可以在/ res中创建一个新的colors.xml文件,并定义颜色如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="mycolor">#FF6666</color>
</resources>

并简单地获取R.color.mycolor

中定义的颜色
getResources().getColor(R.color.mycolor)

答案 1 :(得分:13)

要与ContextCompat一起使用并重新使用颜色,您可以执行以下操作:

ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));

答案 2 :(得分:10)

应该是这样的......

ColorDrawable cd = new ColorDrawable(0xffff6666);

注意我使用了8个十六进制数字,而不是6个十六进制数字。其中add to transparency

答案 3 :(得分:4)

我认为你必须使用:

  

public static int parseColor(String colorString)

     

在API级别1中添加解析颜色字符串,并返回   对应的color-int。如果无法解析字符串,则抛出一个   IllegalArgumentException异常。支持的格式为:#RRGGBB #AARRGGBB红色,蓝色,绿色,黑色,白色,灰色,青色,品红色,黄色,浅灰色,深灰色,灰色,浅灰色,深灰色,浅绿色,紫红色,石灰色,   栗色,海军蓝,橄榄色,紫色,银色,青色

答案 4 :(得分:4)

按照上述建议,成为这个问题的摘要:

  1. ColorDrawable colorDrawable = new ColorDrawable( Color.parseColor (“#ce9b2c”));`

  2. ColorDrawable colorDrawable = new ColorDrawable( 0xFFCE9B2C ); 注意有8个十六进制数字,而不是6个十六进制数字,这没有用。案例全部

  3. ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext,R.color.default_color));

  4. 选择你!

答案 5 :(得分:0)

  

这是我将十六进制颜色转换为int并应用于背景的方式   视图的

假设我们的颜色为#8080000。

1)十六进制到整数转换

int myColor = Color.parseColor("#808000");

2)设置背景

view.setBackgroundColor(context.getColor(myColor));