Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I tint this PictureDrawable?

I am using svgandroid to generate PictureDrawables from SVG raw resources. However, I can't seem to be able to apply a color filter on a drawable created this way.

The old code using PNGs

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

works, but

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

does not. I have tried applying the color filter on the Drawable, on the ImageView (after setting the drawable to it), through XML, even on the Drawable after setting it as the drawable of the ImageView, either is OK for the PNG but neither works for the PictureDrawable. Replacing setImageDrawable by setBackgroundDrawable, as suggested by some, does not render the drawable at all. I am running the code on Androids 1.6, 2.3, 4.0, no difference. I have checked the source of the SVG library, it does not touch color filters in any point. What am I doing wrong? Is tinting unavailable for some kinds of drawables?

like image 323
The Vee Avatar asked Dec 01 '12 03:12

The Vee


1 Answers

Use this fork of svg-android: https://github.com/japgolly/svg-android

It supports ColorFilters.

like image 134
Golly Avatar answered Nov 15 '22 10:11

Golly