android - 我可以序列化在 Canvas 上绘制的路径以在重新启动应用程序时重新绘制路径吗

标签 android serialization graphics path

我有一个使用 Canvas 绘制用户涂鸦的应用程序。我已经将外部文件中的路径序列化并保存在 SD 卡中。当用户再次启动应用程序然后单击(重新绘制)按钮时,我希望在 Canvas 上重新绘制保存的路径。我无法重绘路径。我在调试和检查时从文件中检索路径。但是我不知道为什么没有重新绘制路径。 请帮忙。

最佳答案

我引用了 another question here我做了一些修改,它对我来说效果很好。

要理解我们可以认为我们只需要存储一个 Action 和点的映射。我们需要 path.moveTo(int x, int y), path.lineTo(int x, int y), 用于涂鸦的 path.quadTo(int x1, int y1, int x2, int y2) 和 path.reset() 方法。
这种情况下的操作是:lineTo、moveTo、quadTo、reset 和 points 是对应的点。

我取了两个数组 1 代表 x,另一个代表 y。对于 quadTo(x1,y1,x2,y2),我们需要两个点,对于重置,我们不需要任何点,对于其他,我们需要一个点 (x,y)。
我们可以认为 Action 是键,{arrayX[], arrayY[]} 是 Action 的值。对于 lineTo 和 moveTo 等操作,arrayX[] 和 arrayY[] 的大小为 1,对于 quadTo,大小为 2,对于重置,大小为 0(或者我们可以同时拥有两个数组 null ),因为在这种情况下我们不需要点.我们只需要小心地从数组中检索与 Action 键对应的点的值。当 action 是 lineTo 时,我们只是在 Canvas 上绘制路径。

关于android - 我可以序列化在 Canvas 上绘制的路径以在重新启动应用程序时重新绘制路径吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832931/

相关文章:

Android 媒体服务器在部分播放错误 100 0 后死机

java - Android fragment - 无法播放此视频

java - 使用 Gson 序列化和反序列化枚举

algorithm - 图形填充算法-获取边框

c#如何使用图形路径制作平滑的圆弧区域

javascript 变量替换 this.refresh , window.refresh

java - 更改数组中的值不会传播到应用程序中

java - 对象输出和输入问题,仅打印输入的第一行

java 将对象序列化为ByteArray

java - Java 中时间序列数据中用户选择的标记