How do I use obtain a drawable from a Shader
(such as LinearGradient
) so that I can use it as a background in my UI?
Since the background will probably need to resize, we will use a ShaderFactory
to produce the Shader
:
ShapeDrawable.ShaderFactory sf=new ShapeDrawable.ShaderFactory() {
@Override
public Shader resize(int width, int height) {
return new LinearGradient(0, 0, width, height,
new int[]{Color.WHITE, Color.GRAY, Color.BLACK},
new float[]{0,0.5f,1}, Shader.TileMode.MIRROR);
}
};
We use this to create a PaintDrawable
which we can use as a background:
PaintDrawable p=new PaintDrawable();
p.setShape(new RectShape());
p.setShaderFactory(sf);
getWindow().setBackgroundDrawable(p);
This is just an example and in this case it would actually be better to just declare this using XML. Look at the example here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With