Android Bitmap撤消重做效果

时间:2016-05-10 04:56:57

标签: android view bitmap android-canvas undo-redo

使用铅笔,橡皮擦,直线,椭圆,三角形,方形,撤消,重做等多种工具创建画布。

撤消,重做无法正常工作。

  @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w, h, oldw, oldh);

            mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);

}

2 个答案:

答案 0 :(得分:1)

我不同意第一个答案,存储位图非常昂贵。

你应该存储的是动作本身。你可以创建一个新的类调用Action,并存储绘图路径,Paint样式等。当用户点击重做按钮时,对位图执行动作。

我写了一个关于paintboard的演示,它目前只支持撤消操作,但是当动作存储在List中时,您可以轻松地为其添加重做功能。地址为PaintView

答案 1 :(得分:-1)

使用undo-redo的变体之一是在每个动作之后存储位图(例如使用HashMap),然后将当前位图替换为预览位图(如果是撤消动作)或下一个位图(如果此重做动作)。据我所知,android sdk没有默认api来做你想做的事。