通过更改活动保存画布图

时间:2015-07-26 22:22:54

标签: android canvas

我正在使用我在网上找到的CanvasView API,我想知道如何保存屏幕上的图片,以便我在活动时更改。

这是处理画布的代码,非常简单。但是,每当我往返页面时,图纸就会消失。有谁知道如何保存图纸?

public CanvasView canvas;

public void initializeCanvas(View v, int color, float strokeWidth) {
    canvas = (CanvasView)v.findViewById(R.id.canvas);
    canvas.setMode(CanvasView.Mode.DRAW);
    canvas.setDrawer(CanvasView.Drawer.PEN);
    canvas.setPaintStyle(Paint.Style.STROKE);
    canvas.setOpacity(200);
    canvas.setPaintStrokeColor(color);
    canvas.setPaintStrokeWidth(strokeWidth);
}

https://github.com/Korilakkuma/CanvasView

1 个答案:

答案 0 :(得分:0)

我无法在那里找到任何东西来完整保存所有内容。但是我再也不擅长阅读API了。

您希望在暂停之前保存活动实例(转移到另一个活动)。 Android默认做了一些,但不是太多。您需要指定详细信息(就像为深度复制创建更好的复制构造函数一样)。

This article on Recreating Activity可以为您提供基本想法。现在,您可以选择保存savedInstanceState中的内容和保存方式以及稍后恢复:

以下所有内容均未经过测试。尝试第一个,如果它不起作用,发疯。让未来的读者知道什么有用。

  • CanvasView.java有一个方便的public Bitmap getBitmap()方法。从那里获取位图图像。以某种方式暂时保存位图。还原时,使用public void drawBitmap(Bitmap bitmap)方法还原绘图。你将失去绘图历史和东西和东西的设置。为了保存它们,您可以尝试下面的内容。
  • 使用提供的访问者方法(例如public int getBaseColor())保存Canvas类的一些select属性,稍后使用公共修饰符(例如public void setBaseColor(int color)
  • 恢复它们
  • 修改API中的类以制作motherOfGetters(...)motherOfSetters(.....)方法(我创建了名称)。它们将为您提供最重要的数据类型的值,以便使用setter保存并稍后将其还原。
  • 将您的API对象保存在savedInstanceState中。 This SO post on saving objects可能对此有所帮助。