以下是我的自定义视图的代码示例:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
d = new ShapeDrawable(new PathShape(path, getWidth(), getHeight()));
path.moveTo(110, 110);
path.lineTo(210, 110);
d.getPaint().setColor(pathColor);
d.getPaint().setStyle(Paint.Style.STROKE);
d.getPaint().setStrokeWidth(3);
d.setBounds(0, 0, getWidth(), getHeight());
d.draw(canvas);
}
public void changePath (int color){
pathColor = color;
invalidate();
}
当我调用 changePath()方法时效果很好。
但是,如果我将 invalidate()更改为 invalidateDrawable(d),则不会重新绘制 ShapeDrawable d 。错误在哪里?