[英]boot_completed not working on Android 10 Q API level 29
[英]setColor not working after Android 10 (API 29) upgrade
我的代码
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 创建渐变)。
你可以用演员来解决这个问题:
paint.setColor((int)0xFFFFFFFF);
...虽然我无法在我自己的机器上重现这种行为... 0xFFFFFFFF 总是被解释为一个int
(即使它超出范围,严格来说)。 不确定为什么您的编译器选择setColor(long)
覆盖。
也许你应该试试这个。
paint.setColor(ContextCompat.getColor(YourActivity.this,R.color.colorPrimary));
参数值被视为长数,因此无法计算颜色空间。 有两个不同的函数,valueOf(int) 和 valueOf(long)。 只需转换为 int 即可使用标准 int 值。
valueOf(0xFFFFFFFF.toInt())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.