Android 位图撤消重做效果

Android Bitmap Undo Redo Effect

使用铅笔、橡皮、线条、椭圆、三角形、正方形、撤消、重做等多种工具创建 Canvas

撤消、重做不起作用。

  @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);

}

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

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

你应该存储的是动作itself.you可以创建一个新的class调用动作,并存储绘图路径,Paint风格,etc.and当用户点击重做按钮时,执行位图上的动作。

我写了一个关于 paintboard 的 demo,它目前只支持撤消操作,但是通过将操作存储在列表中,您可以轻松地将重做功能添加到 it.the 地址是 PaintView