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?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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.