我的课程定义如下:
public class Island extends View {
private ShapeDrawable mDrawable;
public Island(Context context) {
super(context);
int width = 50;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(0, 0, width, height);
}
public void change() {
mDrawable.getPaint().setColor(Color.BLACK);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
当我在对象上调用change()时,为什么形状不会改变颜色?感谢。
答案 0 :(得分:4)
你需要调用invalidate,以便视图知道它需要重绘
答案 1 :(得分:0)
假设您的对象是, 岛屿岛屿=新岛屿(背景);
要更新视图,您可以调用island.onDraw() 要么 island.invalidate();
如果要从另一个线程更改此设置,则可以使用postInvalidate()方法。