Android绘图中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类无法序列化的原因绕了好大一圈,但是最后能实现就好,之前在网上找的时候都只找到问问题的同学,事后都是一句我解决了没有提供解决思路...希望这个文章能帮助到大家,还有如果有更好的方法请告诉我,谢谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值