我正在尝试在我的应用程序中实现撤消和重做。我正在阅读其他问题和论坛,但代码不适合我。我在这里只发布相关代码以便于阅读,因为我绘制了不同的形状。对于重做和撤消,我在另一个活动中有两个按钮,我在每个按钮的onclicklistener中调用函数redo或undo。
private void setupDrawing(){
drawPath=new Path();
//Set up paint
paths.add(drawPaint);
}
public boolean onTouchEvent(MotionEvent event){
tX=event.getX();
tY=event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
//Action move down
break;
case MotionEvent.ACTION_MOVE:
//Action move
break;
case MotionEvent.ACTION_UP:
drawCanvas.drawCircle(x, y, radius, drawPaint); //Example of drawing object
drawPath = new Path();
paths.add(drawPath);
break;
default:
return false;
}
invalidate();
return true;
}
public void undo(){
if(paths.size()>0){
undonePaths.add(paths.remove(paths.size()-1));
invalidate();
}
if(undo==true){
undo=false;
}else{
undo=true;
}
}
public void redo(){
if(undonePaths.size()>0){
paths.add(undonePaths.remove(undonePaths.size()-1));
invalidate();
}
if(redo==true){
redo=false;
}else{
redo=true;
}
}
答案 0 :(得分:0)
我发现我的代码出了什么问题。我在画布上画画,我需要将形状添加到路径中。如果有人需要,我会留下代码。
{{1}}