setColor 在 Android 10 (API 29) 升级后不工作

问题描述 投票:0回答:4

我的代码

paint.setColor(0xFFFFFFFF);

在升级到Android 10之前运行成功,现在报错:

Wrapped java.lang.IllegalArgumentException: Invalid ID, must be in the 范围 [0..16)

(看起来错误信息被修剪了)

尽管如此,

paint.setARGB(255,255,255,255);

工作正常。

我读过从 API 29 开始,setColor 也接受长颜色值,我尝试明确地放置

paint.setColor(parseInt(0xFFFFFFFF));

paint.setColor(valueOf(0xFFFFFFFF));

但他们都没有工作...

关于如何使用setColor有什么解决办法吗? ARGB 并不总是适合我(例如,无法通过指定 ARGB 创建渐变)。

java android paint
4个回答
0
投票

你可以用演员表来解决这个问题:

paint.setColor((int)0xFFFFFFFF);

...虽然我无法在自己的机器上重现此行为...0xFFFFFFFF 始终被解释为

int
(即使它超出范围,严格来说)。不确定为什么您的编译器选择
setColor(long)
覆盖。


0
投票

也许你应该试试这个。

        paint.setColor(ContextCompat.getColor(YourActivity.this,R.color.colorPrimary));

0
投票

参数值被视为长数字,因此无法计算颜色空间。有两个不同的函数,valueOf(int) 和 valueOf(long)。只需转换为 int 即可使用标准 int 值。

valueOf(0xFFFFFFFF.toInt())

0
投票

paint.setColor(Color.pack(Color.parseColor("#00ffff"))); android SDK >= 29

© www.soinside.com 2019 - 2024. All rights reserved.