我在使用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仅使用渐变开始颜色(红色)填充整个形状。换句话说,自定义形状绘制正确但颜色完全错误。有没有人见过这个,知道可能是什么问题?
答案 0 :(得分:0)
经过实验,我发现渐变的大小必须与PathShape
的标准宽度和标准高度相关,当它被创建时,与{{1的高度和宽度无关}}。这意味着您必须跟踪ShapeDrawable
在PathShape
的整个生命周期中分配的标准宽度/高度(如果它已调整大小)。
虽然有点不优雅,但这是一个解决方案:
ShapeDrawable