invalidate()
不记得我的OnDraw()
方法。我在invalidate()
所在的同一个类中的setter方法中使用OnDraw()
。
public class PuzzleDraw extends View {
// defining some variables //
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// codes for painting puzzle //
}
public PuzzleDraw(Context context) {
super(context);
}
// Method for giving cursor X/Y from MainActivity OnTouch() method and using it in OnDraw() method in some part of painting code //
public void setCursor(int i, int j) {
this.xx = i;
this.yy = j;
invalidate();
}
当我调试我的代码时,一切都很好,除了在OnDraw()
执行时调用invalidate()
...
事实上,invalidate()
对我毫无用处!
怎么了?
我也使用了postInvalidate()
,this.invalidate()
,this.postInvalidate()
,但没有改变。
答案 0 :(得分:3)
调用invalidate()
不会直接执行onDraw
,它只会在View
类中设置相应的标志。下次遍历视图层次结构时,框架将调用onDraw
方法。
答案 1 :(得分:1)
您可能只通过从活动中调用setCursor(float,float)方法一次调用它,但如果您希望框架本身在内部调用onDraw方法,则必须一次又一次地调用invalidate方法。
希望这会起作用