gpt4 book ai didi

android - setColorFilter 在 API29 上被弃用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:50 33 4
gpt4 key购买 nike

我使用以下行来更改 VectorDrawable 的颜色:

mydrawable.getBackground().setColorFilter(颜色, PorterDuff.Mode.SRC_ATOP)

虽然现在已弃用,但效果很好。文档建议我使用:

mydrawable.getBackground().setColorFilter(new BlendModeColorFilter(color, PorterDuff.Mode.SRC_ATOP))

不过,BlendModeColorFilter 仅在 API29 上可用。在检查了已弃用方法的来源后,我意识到它调用了:

新的 PorterDuffColorFilter()

所以,我继续使用:

mydrawable.getBackground().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP))

着色成功了。这是已弃用方法的正确替代方法,还是我必须在 API29 上使用 BlendModeColorFilter?

谢谢。

最佳答案

试试这个:

public class MyDrawableCompat {
public static void setColorFilter(@NonNull Drawable drawable, @ColorInt int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
drawable.setColorFilter(new BlendModeColorFilter(color, BlendMode.SRC_ATOP));
} else {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
}
}

还有这个:

MyDrawableCompat.setColorFilter(mydrawable.getBackground(), color);

更新:只需使用最新版本的 core androidx library和这段代码:

mydrawable.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(color, BlendModeCompat.SRC_ATOP)

关于android - setColorFilter 在 API29 上被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716093/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com