我的准则
paint.setColor(0xFFFFFFFF);
在升级到Android 10之前已成功运行。现在它抛出一个错误:
java.lang.IllegalArgumentException:ID无效,必须在范围[0..16)内
(看起来错误消息已被修剪)
尽管如此
paint.setARGB(255,255,255,255);
工作正常。
我读到过从API开始,setColor也接受长颜色值,我试着显式地把
paint.setColor(parseInt(0xFFFFFFFF));
或
paint.setColor(valueOf(0xFFFFFFFF));
但都不管用
如何使用setColor?ARGB并不总是为我工作(例如。无法通过指定ARGB创建渐变)。
4条答案
按热度按时间tuwxkamq1#
你可以用一个转换来解决这个问题:
……虽然我无法在自己的机器上重现这种行为……0xFFFFFFFF总是被解释为
int
(严格来说,即使它超出了范围)。不知道为什么你的编译器选择setColor(long)
覆盖。jhkqcmku2#
也许你该试试这个
lbsnaicq3#
参数值被视为长数字,因此无法计算颜色空间。有两个不同的函数,valueOf(int)和valueOf(long)。只需要强制转换为int就可以使用标准的int值。
0wi1tuuw4#
Android SDK〉= 29