Android : 如何保留所有图纸?

Android : How can I keep all drawings?

我想在android中画一些线条。我使用 SampleView class 并且它是 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);
            }
}

每次调用 sv.invalidate() 时,我的 x0,x1,y0,y1 都会发生变化。每次绘制新线时,我之前的线被清除 ...但我想保留所有线。我该怎么做?

您应该跟踪路径组件中的线条。当您要绘制一条新线时,添加到路径中。然后,您可以在 onDraw() 中绘制路径,或者在出于任何原因需要时清除路径。

Path | Android Developers

一个例子可能是这样的:

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 方法意味着经常更新并绘制您告诉它的内容,您必须保持状态。