我在我的 Android 应用程序上制作了一个简单的白板,用户可以在其中绘制一些东西。我想添加一个撤消功能,以便他能够回到他之前的操作。
在我的Touch Start
活动中,我添加了以下代码,它基本上将当前画布添加到一个ArrayList
并创建一个新画布以避免相同的引用。
previousDrawing.add(this.canvas);
this.canvas = new Canvas(this.bitmap);
然后,在我的undo
方法中,我添加了以下代码:
if (previousDrawing.size() > 0)
{
// Remove last
this.canvas = previousDrawing.remove(previousDrawing.size() - 1);
this.canvas.setBitmap(this.bitmap);
}
它根本不起作用。我的意思是,我可以使用this.canvas.drawPath(this.path, this.paint);
但不能保存和恢复以前的画布在我的画布上绘图。
你能帮我做吗?
提前致谢。
编辑:
我也尝试过使用saveLayer method
. 但是当我保存时,我不再能够在画布上绘图。这是正常行为吗?