Skip to content Skip to sidebar Skip to footer

Is It Possible To Dither A Gradient Drawable?

I'm using the following drawable: GradientDrawable.setDither() in code.

(The way the codes looks, technically you could include the Gradient as the only child of a <selector>, and enable dithering on the entire selector; however, it's definitely a hack.)

I'm not convinced enabling dithering will actually solve your problem, as dithering (at least as it's noted in the official Android docs) are for solving banding problems when the device has too small of a color palette. This seems to be a banding problem due to the size of the gradient.

Solution 2:

Hi all i have the same problem, there is one solution which works but it's not very good.

getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

It works for me but the problem is that the whole windows is dithered. I was looking to find a way to dither only the gradient but i couldn't find anything. android:dither="true" in xml is not working and GradientDrawable.setDither(true) is also not working. So any ideas how can i dither only the gradient ?

Solution 3:

I faced a very similar problem last year and came to no useful conclusion on the android-developers list.

However, a while ago I discovered — after trying <gradient> and all sorts of Drawables with various dither attributes and manually creating dithered PNGs — that if I manually create a new image using GIMP, and specify the density at this point (i.e. explicitly entering 120, or 240 etc) when creating the image, it looks great, even on hdpi devices. And this is despite it being a grayscale gradient, with not so many colours.

The PNG when saved ends up being comparatively large (at least for 240dpi), but it looks great.

Post a Comment for "Is It Possible To Dither A Gradient Drawable?"