如何使用渐变填充ShapeDrawable(包含PathShape)

时间:2012-06-09 17:06:26

标签: android drawable

我在使用drawable的ShapeDrawable方法填充包含自定义PathShape的{​​{1}}时遇到问题。绘制setShaderFactory()时,以下代码可以正常工作:

RectShape

但是,当我将ShapeDrawable shape = new ShapeDrawable(); shape.setShape(new RectShape()); shape.setShaderFactory(new ShaderFactory() { @Override public Shader resize(int width, int height) { LinearGradient gradient = new LinearGradient (0, 0, width, height, Color.Red, Color.Blue, TileMode.REPEAT); return gradient; } }); 更改为任何自定义RectShape时,drawable仅使用渐变开始颜色(红色)填充整个形状。换句话说,自定义形状绘制正确但颜色完全错误。有没有人见过这个,知道可能是什么问题?

1 个答案:

答案 0 :(得分:0)

经过实验,我发现渐变的大小必须与PathShape的标准宽度和标准高度相关,当它被创建时,与{{1的高度和宽度无关}}。这意味着您必须跟踪ShapeDrawablePathShape的整个生命周期中分配的标准宽度/高度(如果它已调整大小)。

虽然有点不优雅,但这是一个解决方案:

ShapeDrawable