2013-05-28 44 views
1

我正在创建一个绘图应用程序。 我有一个帆布基于用户输入其绘制线条的自定义视图:Android保存Canvas

class Line { 
    float startX, startY, stopX, stopY; 
    public Line(float startX, float startY, float stopX, float stopY) { 
    this.startX = startX; 
    this.startY = startY; 
    this.stopX = stopX; 
    this.stopY = stopY; 
    } 
    public Line(float startX, float startY) { // for convenience 
    this(startX, startY, startX, startY); 
    } 
} 

public class DrawView extends View { 
    Paint paint = new Paint(); 
    ArrayList<Line> lines = new ArrayList<Line>(); 

    public DrawView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    paint.setAntiAlias(true); 
    paint.setStrokeWidth(6f); 
    paint.setColor(Color.BLACK); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeJoin(Paint.Join.ROUND); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
    for (Line l : lines) { 
     canvas.drawLine(l.startX, l.startY, l.stopX, l.stopY, paint); 
    } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     lines.add(new Line(event.getX(), event.getY())); 
     return true; 
    } 
    else if ((event.getAction() == MotionEvent.ACTION_MOVE || 
     event.getAction() == MotionEvent.ACTION_UP) && 
     lines.size() > 0) { 
     Line current = lines.get(lines.size() - 1); 
     current.stopX = event.getX(); 
     current.stopY = event.getY(); 
     Invalidate(); 
     return true; 
    } 
    else { 
     return false; 
    } 
    } 
} 

我想要做的是线保存到一个文本文件,以便用户可以在以后加载它们。 如何保存并加载它们?

+2

您可以将它们保存到位图,或者您将创建一个文件与x/y协调的每行的终结点以任何格式方便xml,json或二进制。最简单的方法只是一个二进制文件 - 每一行都是写入文件的一系列4个浮点数,然后在加载时解析文件。 –

回答