我如何着色这个PictureDrawable?

时间:2012-12-01 03:00:11

标签: android svg svg-android

我正在使用svgandroid从SVG原始资源生成PictureDrawable。但是,我似乎无法在这样创建的drawable上应用滤色器。

使用PNG的旧代码

icon = getResources().getDrawable(R.drawable.ic_braille);
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);

有效,但

icon = SVGParser.getSVGFromResource(getResources(), R.raw.ic_braille).createPictureDrawable();
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);

没有。我尝试在DrawView上,在ImageView上(在设置drawable之后),通过XML,甚至在Drawable上将其设置为ImageView的drawable之后应用滤色器,对于PNG也可以,但是它们都不适用PictureDrawable。正如某些人所建议的那样,将setImageDrawable替换为setBackgroundDrawable并不能提供可绘制的内容。我在Androids 1.6,2.3,4.0上运行代码,没有区别。我检查了SVG库的来源,它在任何时候都没有触摸彩色滤镜。我究竟做错了什么?某些类型的drawables的着色不可用吗?

1 个答案:

答案 0 :(得分:2)

使用svg-android的这个分支: https://github.com/japgolly/svg-android

它支持ColorFilters。