我的代码
paint.setColor(0xFFFFFFFF);
在升级到Android 10之前已成功运行。现在它会引发错误:
包装的java.lang.IllegalArgumentException:无效的ID,必须位于 范围[0..16)
(看起来像修剪了错误消息)
尽管如此,
paint.setARGB(255,255,255,255);
工作正常。
我已阅读到从API 29开始,setColor也接受长颜色值,我尝试显式放置
paint.setColor(parseInt(0xFFFFFFFF));
或
paint.setColor(valueOf(0xFFFFFFFF));
但是他们都不起作用...
任何解决方案如何使用setColor? ARGB并不总是对我有用(例如,无法通过指定ARGB创建渐变)。
答案 0 :(得分:0)
您可以通过强制修复此问题:
paint.setColor((int)0xFFFFFFFF);
...尽管我无法在自己的机器上重现此行为... 0xFFFFFFFF始终被解释为int
(严格来说,即使超出范围)。不确定编译器为何选择setColor(long)
替代。
答案 1 :(得分:0)
也许您应该尝试这个。
paint.setColor(ContextCompat.getColor(YourActivity.this,R.color.colorPrimary));
答案 2 :(得分:0)
参数值被视为长整数,因此它无法计算色彩空间。有两个不同的函数,valueOf(int)和valueOf(long)。只需将其强制转换为int即可使用标准int值。
valueOf(0xFFFFFFFF.toInt())