android 画图撤销,android:画图板的撤销和恢复功能无法正常运行

public class MyView extends View{

public static Paint paint = null;

public static Canvas cacheCanvas = null;

private Path path;

Bitmap cacheBitmap = null;

public static int PEN_WIDTH = 10;

public static int PAINT_STATUS = 0;

private static int m_strokeColor = Color.RED;

float preX;

float preY;

class DrawPath{

Path path;

Paint paint;

}

private static ArrayList savePath;

private static ArrayList deletePath;

private DrawPath dp;

public SmartpadView(Context context,AttributeSet attrs) {

super(context,attrs);

initCanvas();

initPaint();

savePath = new ArrayList();

deletePath = new ArrayList();

}

public void initCanvas() {

cacheBitmap = Bitmap.createBitmap(3000,2000,Bitmap.Config.ARGB_8888);

cacheCanvas = new Canvas(cacheBitmap);

path = new Path();

cacheCanvas.setBitmap(cacheBitmap);

}

public void initPaint(){

paint = new Paint(Paint.DITHER_FLAG);

paint.setColor(Color.RED);

paint.setStyle(Paint.Style.STROKE);

paint.setStrokeWidth(PEN_WIDTH);

paint.setAntiAlias(true);

paint.setDither(true);

paint.setStrokeJoin(Paint.Join.ROUND);

paint.setStrokeCap(Paint.Cap.ROUND);

}

@Override

public void onDraw(Canvas canvas) {

Paint bmpPaint = new Paint();

canvas.drawBitmap(cacheBitmap, 0, 0, bmpPaint); // ②

canvas.drawPath(path, paint);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

float x = event.getX();

float y = event.getY();

switch (event.getAction())

{

case MotionEvent.ACTION_DOWN:

path.moveTo(x, y);

preX = x;

preY = y;

break;

case MotionEvent.ACTION_MOVE:

path.quadTo(preX, preY, x, y);

preX = x;

preY = y;

break;

case MotionEvent.ACTION_UP:

dp = new DrawPath();

dp.path = path;

dp.paint = paint;

savePath.add(dp);

cacheCanvas.drawPath(path, paint); // ①

path.reset();

break;

}

invalidate();

return true;

}

public void undo(){

if(savePath!=null&&savePath.size()>0){

initCanvas();

DrawPath temp=savePath.get(savePath.size()-1);

deletePath.add(temp);

savePath.remove(savePath.size()-1);

for(int i=0;i

System.out.println(“撤销0”);

DrawPath dp = savePath.get(i);

cacheCanvas.drawPath(dp.path, dp.paint);

}

invalidate();// 刷新

}

}

public void redo(){

if(deletePath!=null&&deletePath.size()>0){

DrawPath temp=deletePath.get(deletePath.size()-1);

savePath.add(temp);

deletePath.remove(deletePath.size()-1);

cacheCanvas.drawPath(temp.path, temp.paint);

invalidate();

}

}

}

解决方案

20

無法正常運行是甚麼情況, 運行時錯誤

a8de0a42bafcf67ef1e0eb558aae6d92.gif

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android:画图板的撤销和恢复功能无法正常运行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值