Drawable => grayscale

Viewed 20958

What would be the right way to turn a color Drawable into a grayscale one (to indicate disabled state)?

EDIT:
B/W => grayscale

4 Answers

I know this question was asked a while ago, but I came across a simpler solution that works if you have a Drawable and you just want to display that same drawable in grayscale. No need to have a canvas or a painter...

protected Drawable convertToGrayscale(Drawable drawable)
{
    ColorMatrix matrix = new ColorMatrix();
    matrix.setSaturation(0);

    ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);

    drawable.setColorFilter(filter);

    return drawable;
}

Hope this helps too!

Related