Android绘图中Path无法序列化的问题解决思路
2013-10-25 12:28
761 查看
在项目中制作绘制功能时,有个功能是要求将PATH序列化成二进制文件保存,
但是直接在序列化自定义类时,一直报错,类中包含有Point类的对象,Path类的对象,和其他几个基本类型,查了网上的资料后知道了大概原因是POINT类和PATH类无法直接序列化.
自定义类要序列化保存必须子类也支持序列化,之后自定义了继承自PATH和POINT的子类,依然失败,只好使用其他方式.
大致的解决思路是创建一个MyPoint类,用于存储点坐标,实现的功能类似POINT类引入Serializable接口
用此类实例化的对象代替Point类保存PATH类的点坐标,然后在绘制过程中将点保存在一个ArrayList数组中points,一个数组为一条线段,再将这个数组保存在一个新的ArrayList中paths,这个数组是多条线段,最后将这个新的ArrayList序列化成文件保存,在读取序列化文件时,按顺序遍历paths数组,读出points,再按照PATH的moveTo和quaTo方法将points还原成path即可.
这是一个简单的功能,因为PATH类无法序列化的原因绕了好大一圈,但是最后能实现就好,之前在网上找的时候都只找到问问题的同学,事后都是一句我解决了没有提供解决思路...希望这个文章能帮助到大家,还有如果有更好的方法请告诉我,谢谢.
但是直接在序列化自定义类时,一直报错,类中包含有Point类的对象,Path类的对象,和其他几个基本类型,查了网上的资料后知道了大概原因是POINT类和PATH类无法直接序列化.
自定义类要序列化保存必须子类也支持序列化,之后自定义了继承自PATH和POINT的子类,依然失败,只好使用其他方式.
大致的解决思路是创建一个MyPoint类,用于存储点坐标,实现的功能类似POINT类引入Serializable接口
public class MyPoint implements Serializable{ float x; float y; public MyPoint(float x,float y){ this.x=x; this.y=y; } public MyPoint(){} }
用此类实例化的对象代替Point类保存PATH类的点坐标,然后在绘制过程中将点保存在一个ArrayList数组中points,一个数组为一条线段,再将这个数组保存在一个新的ArrayList中paths,这个数组是多条线段,最后将这个新的ArrayList序列化成文件保存,在读取序列化文件时,按顺序遍历paths数组,读出points,再按照PATH的moveTo和quaTo方法将points还原成path即可.
这是一个简单的功能,因为PATH类无法序列化的原因绕了好大一圈,但是最后能实现就好,之前在网上找的时候都只找到问问题的同学,事后都是一句我解决了没有提供解决思路...希望这个文章能帮助到大家,还有如果有更好的方法请告诉我,谢谢.
相关文章推荐
- 换个思路解决Android SDK Manager无法更新或者更新慢问题
- 解决JsonExSerializer无法反序列化JSON时间问题
- (转载)解决Android下Wap模式无法访问网络的问题
- 解决Android DDMS无法查看/data目录问题
- 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
- Android SDK Manager无法更新问题解决
- 另辟思路解决Android 4.0以后不能监听和屏蔽Home键的问题
- 解决小米、红米及其他 Android 手机无法在 Mac 下进行真机调试的问题(转)
- android开发时解决adb端口被占用问题,adb无法连接手机
- Android 调用系统图片裁剪(解决“无法加载。”问题)
- androidTestCompile 无法依赖问题解决方案
- eclipse通过android layour editor无法查看布局文件问题解决
- 如何解决android应用在大屏幕手机或者平板电脑无法全屏显示的问题
- Linphone android 最新版编译(解决android5.0以上无法运行问题)
- Android Stuidio解决更新下载时无法连接URL的问题
- 关于Android多项目依赖在Eclipse中无法关联源代码的问题解决
- [置顶] Android DDMS 无法打开data问题的简便解决办法--一次性解决
- 解决下载android源码时出现的无法连接问题
- Apache连接PHP后无法启动问题解决思路
- 解决在android开发中ViewPager中Gallery无法滑动问题