创建新的可绘制颜色

我正在尝试将十六进制值转换为int,以便我可以创建新的可绘制颜色。我不确定这是否可能,但根据文档,它应该。它显然要求

公共颜色可绘制(整齐颜色)

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

参数颜色 要绘制的颜色。

因此,我的代码不起作用,因为我收到无效int:“FF6666”错误。有什么想法吗?

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

答案 1

既然你谈论的是十六进制,你必须从开始,不要忘记不透明性。0x

所以基本上:0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

您还可以创建一个新颜色.xml文件转换为 /res 并定义颜色,如下所示:

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

并简单地获取R.color.mycolor中定义的颜色

getResources().getColor(R.color.mycolor)

答案 2

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

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

推荐