Drawable => grayscale

yanchenko picture yanchenko · Nov 24, 2009 · Viewed 20.1k times · Source

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

EDIT:
B/W => grayscale

Answer

Justin picture Justin · Feb 10, 2011

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!