我正在尝试将十六进制值转换为 int,以便创建新的可绘制颜色。我不确定这是否可能,但根据 documentation , 它应该。它明确要求
public ColorDrawable (int color)
Added in API level 1 Creates a new ColorDrawable with the specified color.
Parameters color The color to draw.
所以,我的代码无法正常工作,因为我收到 Invalid 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)
关于java - 创建一个新的颜色drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407672/