我对Android很新,我正在创建一个小应用程序,我可以在自定义视图上绘制矩形和圆形。
我想要做的是当按下圆圈按钮时我想绘制圆圈,当按下矩形按钮时我想绘制一个矩形。
但是我遇到的问题是当我按下圆形按钮时它会正确地绘制圆圈,但是当我点击矩形按钮并尝试绘制它时,它隐藏了之前绘制的圆形并绘制了一个矩形。如果我再次选择圆圈并绘制它,它将隐藏矩形并绘制一个圆圈。
MainActivity.java :按下按钮时,会调用buttonPressed方法:
private DrawingView drawView;
public void buttonPressed(View v)
{
String shape = v.getTag().toString();
if(shape.equals("circle"))
{
Log.e("button pressed", "circle");
drawView.setValue("circle");
}
else if(shape.equals("rect"))
{
Log.e("button pressed", "rect");
drawView.setValue("rect");
}
}
在我的 DrawingView 类的onDraw方法中我正在做:
@Override
protected void onDraw(Canvas canvas)
{
if(testValue.equals("rect"))
{
// draw rectangle
}
else if(testValue.equals("circle"))
{
// draw circle
}
}
// setter method to set value
public void setValue(String val)
{
testValue = val;
}
有关如何处理这种情况的任何建议?
答案 0 :(得分:0)
Android视图会在调用onDraw()之前自动清除其画布,因此您必须执行以下两项操作之一:
保留要绘制的项目列表,在按下按钮时添加到列表中,并在onDraw()上迭代它。这很容易实现,但如果列表变长,可能会减慢绘制过程。这发生在UI线程上,所以要小心。
使用与View大小相匹配的私有位图制作自己的Canvas,并在按下按钮时绘制它。在onDraw()中,使用drawBitmap()将缓冲区复制到View上。