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



因此,我的代码无法正常工作,因为我收到一个无效的int:“FF6666”错误。有任何想法吗?

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

最佳答案

由于您正在谈论十六进制,因此必须从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)

07-24 12:30