как сохранить то что нарисовано на Canvas в андроид, и нарисовать его снова
пишу рисовалку, пока что рисую только Path, есть функционал с помошью Spinner устанавливать толщину и цвет линии. при рисовании следующей path и смене цвета или толщины меняется и у первой. я так понимаю нужно сохранять состояние Canvas после каждого рисования. как это делается?
public class CustomView extends View {
private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Path path = new Path();
private float x = -1;
private float y = -1;
private Bitmap bm;
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setStyle(Paint.Style.STROKE);
canvas.drawPath(path,paint);
}
public void setStrokeWidth(int strokeWidth) {
paint.setStrokeWidth(strokeWidth);
}
public void setColor(int color) {
paint.setColor(color);
}
public void setStyle(Paint.Style style){
paint.setStyle(style);
}
private void startMove(float x, float y){
path.moveTo(x, y);
invalidate();
}
private void move(float x, float y){
path.lineTo(x, y);
invalidate();
}
private void endMove(){
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startMove(eventX, eventY);
break;
case MotionEvent.ACTION_MOVE:
move(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
endMove();
break;
}
return true;
}
}