2013-05-28 46 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個浮點數,然後在加載時解析文件。 –

回答