近日项目中遇用到SVG图片需要根据app主题动态更改颜色的需求,经研究后总结以下方法:
int currentThemeColor;
VectorDrawable drawable = (VectorDrawable) mContext.getDrawable(R.drawable.vb_bill_main_card_number_invisible);
drawable.setColorFilter(new PorterDuffColorFilter(currentColor, PorterDuff.Mode.SRC_IN));
本质上SVG图片是一个VectorDrawable,获取drawable使用图片混合模式混合颜色,此方法适用于单色的svg资源,多色资源不适用。
效果(今日支出旁边眼睛图案):
另附图片混合模式的更多使用方式: