Android:我如何保留所有图纸?

时间:2015-01-21 21:07:36

标签: android android-canvas android-view android-drawable

我想在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()时都会发生变化。每次它绘制新行时,我的上一行被清除 ...但我想保留所有行。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您应该跟踪Path组件中的行。有新线要绘制时添加到路径。然后,您可以在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方法旨在经常更新并绘制你告诉它的内容,你必须保持状态。