我正在使用svgandroid从SVG原始资源生成PictureDrawable。但是,我似乎无法在以这种方式创建的可绘制图形上应用滤色器。
使用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);不会。我已经尝试过在drawable上应用滤色器,在ImageView上(在设置Drawable之后),通过XML,甚至在drawable上设置为ImageView的Drawable,都可以用于PNG,但都不适用于PictureDrawable。正如一些人建议的那样,用setBackgroundDrawable替换setImageDrawable根本不会呈现可绘制的图形。我在Android1.6,2.3,4.0上运行代码,没有区别。我已经检查了SVG库的源代码,它在任何地方都不会接触到滤色器。我做错了什么?着色对于某些类型的绘图是不可用的吗?
发布于 2013-01-22 15:53:31
使用svg-android的这个分支:https://github.com/japgolly/svg-android
它支持ColorFilters。
https://stackoverflow.com/questions/13655917
复制相似问题