我使用以下行来更改 VectorDrawable 的颜色:
mydrawable.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
虽然现在已经不再使用它了,但是它工作得很好。文档建议我使用:
mydrawable.getBackground().setColorFilter(new BlendModeColorFilter(color, PorterDuff.Mode.SRC_ATOP))
不过,BlendModeColorFilter
只能在 API29上使用。在检查了这个不推荐的方法的源代码之后,我意识到它调用:
new PorterDuffColorFilter()
所以,我继续用:
mydrawable.getBackground().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP))
着色起作用了。这是否是废弃方法的正确替换,或者我必须在 API29上使用 BlendModeColorFilter?
谢谢你。