如何在android的onDraw方法中存储画布?
我试图在android的onDraw方法中保存和恢复画布,但使用这段代码无法正常工作。我发现,只有最后一行显示为“以前未淹没” 请告诉我,我的代码如下如何在android的onDraw方法中存储画布?,android,android-canvas,Android,Android Canvas,我试图在android的onDraw方法中保存和恢复画布,但使用这段代码无法正常工作。我发现,只有最后一行显示为“以前未淹没” 请告诉我,我的代码如下 public void setMData(Float pData, Float cData, int i){ this.pData = pData; this.cData = cData; this.i = i; } public void onDraw(Canvas canvas) { super
public void setMData(Float pData, Float cData, int i){
this.pData = pData;
this.cData = cData;
this.i = i;
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.restore();
hs = getHeight();
ws = getWidth();
paint.setTextSize(15);
paint.setColor(Color.parseColor("#00FFCC"));
paint.setStrokeWidth(2);
ox = 30;
oy = hs - 30;
canvas.drawLine(30, 30, 30, hs - 30, paint); // Vertical Line
canvas.drawLine(30, hs - 30, ws - 30, hs - 30, paint); // Horizontal
canvas.drawText("(0,0)", 10, hs - 10, paint);
float secWidth = 20;// (ws-30)/mData.size();
float pRatio = oy / 100 * pData;
float cRatio = oy / 100 * cData;
canvas.drawLine(secWidth * i, hs - pRatio, secWidth * (i + 1), hs - cRatio,paint);
canvas.drawText("" + cData, secWidth * (i + 1), hs - cRatio, paint);
canvas.save();
}
试试这个:
int saveCount; //declare this as a field
saveCount = canvas.save();
.....
canvas.restoreToCount(saveCount);
“canvas”是局部变量还是字段?您在哪里声明了“canvas”?我的意思是它是一个字段还是一个局部变量?还可以尝试使用invalidate()/postInvalidate();很抱歉,这是不带canvas.save()和canvas.restore()的解决方案。非常感谢您的帮助。也许您可以与我们共享您的解决方案?我是第一个使用float创建arraylist并存储数据的人,并使用invalidate()使其不成问题,但奇怪的是这些方法不起作用,迫使您使用消耗额外内存的方法。在android开发者的博客上报告您的案例:)