【发布时间】:2015-02-23 11:02:33
【问题描述】:
我在绘制时添加了一个标志(init),它在创建视图时生成 100x500 矩形,但是当我从 onTouch 方法绘制我的 testDraw 方法时,什么都没有绘制。
绘图视图
class DrawingView extends View{
Canvas canvas= new Canvas();;
Paint paint= new Paint();
boolean init;
public DrawingView(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint.setColor(Color.argb(255, 0, 255, 0));
this.init = true;
}
public void testDraw(){
canvas.drawRect(0,0,500,500,paint);
}
@Override
public void onDraw(Canvas canvas){
if(this.init == true){
canvas.drawRect(0,0,500,100,paint);
this.init = false;
}else{
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
testDraw();
}
return false;
}
}
【问题讨论】:
-
你的 testDraw() 应该只是一个
invalidate()。您在 testDraw() 中用于绘制的 Canvas 与您在 onDraw 中使用的框架提供的不同 -
您的视图正在绘制多次,或者没有绘制任何内容。并尝试检查@Balckbelt 答案