我的代碼工作正常,直到表或設備旋轉。旋轉時,繪圖被清除,我知道這發生了,因爲當設備旋轉時,活動重新啓動。 我的問題是如何重新繪製並將數據保存到onSaveInstanceState。 許多人說,我必須使用onSaveInstanceState來保存繪圖,但我不知道如何去做,當我必須保存的數據類型是路徑。如何在方向更改後在畫布中重繪圖形
這裏是我的代碼
public class MyDrawView extends View implements OnTouchListener {
MyDrawView drawView;
float prevX = 0;
float prevY = 0;
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
private Paint mBitmapPaint;
private Paint mPaint;
private int w,h;
private ArrayList<Path> paths = new ArrayList<Path>();
private ArrayList<Paint> bitPaints = new ArrayList<Paint>();
private ArrayList<Paint> pathPaints = new ArrayList<Paint>();
Paint tempPaint;
private String filename="";
public MyDrawView(Context c,String filename) {
super(c);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
this.filename=filename;
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(6);
tempPaint=new Paint(mPaint);
mCanvas = new Canvas();
mPath = new Path();
if (rotated){
setDefaultDrawing();
}
}
public void setDefaultDrawing()
{
}
public Bitmap getBitmap(){
return this.mBitmap;
}
public void setStrokeWidth(float width){
mPaint.setStrokeWidth(width);
}
public void setColor(int color){
mPaint.setColor(color);
}
public String getFileName(){
return this.filename;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
this.w=w;
this.h=h;
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
Path tempPath=new Path(mPath);
paths.add(tempPath);
Paint tempPaint=new Paint(mPaint);
pathPaints.add(tempPaint);
Paint tempBitPaint=new Paint(mBitmapPaint);
bitPaints.add(tempBitPaint);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
更好的修復清單中的方向...使用任意一幅肖像拍攝土地景觀 – Pragnani
我希望我能夠輕鬆地做到我的負擔,但我必須使它靈活:(必須使它在縱向和橫向上均可工作 –