我想在android中绘制一些线条。我使用SampleView类,它是onDraw,如下所示:
private class SampleView extends View {
public SampleView(Context context) {
super(context);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
p.setAntiAlias(true);
p.setColor(Color.RED);
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(5);
canvas.drawLine(x0, y0, x1, y1, p);
}
}
我的x0,x1,y0,y1每次调用sv.invalidate()时都会发生变化。每次它绘制新行时,我的上一行被清除 ...但我想保留所有行。我怎么能这样做?
答案 0 :(得分:1)
您应该跟踪Path组件中的行。有新线要绘制时添加到路径。然后,您可以在onDraw()中绘制路径,或者在需要时清除路径。
一个例子可能是这样的:
public void onDraw(Canvas canvas)
{
Path path = new Path();
boolean isFirstPoint = true;
for(Point point : points)
{
if(isFirstPoint)
{
isFirstPoint = false;
path.moveTo(point.x, point.y);
}
else
{
path.lineTo(point.x, point.y);
}
}
canvas.drawPath(path, paint);
}
但是,当然,有很多方法可以实现这一目标。 onDraw方法旨在经常更新并绘制你告诉它的内容,你必须保持状态。