一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置制造方法及图纸

技术编号:21300526 阅读:26 留言:0更新日期:2019-06-12 08:10
本发明专利技术公开了一种基于可缩放矢量图形的安卓平台笔迹回放方法,包括以下步骤:S1:识别绘制过程中产生的每一段笔划的Path;S2:将识别的每一段笔划的Path保存至路径集合P中;S3:利用监听器和PathMeasure类实现该字体的笔迹回放。本发明专利技术将笔迹用Path类保存为可缩放矢量图形文件,大大减少存储空间,占用内存少且便于往后实现回放功能直接进行代码层面的操作;能够有效降低回放过程的计算量,简化回放代码,并且具备良好的动画效果;也不需要存储,符合实时性,能更灵活地实现实时回放书写过程。本发明专利技术能极大减少存储空间的同时,也能极大简化回放代码,提高代码易读性。

A Handwriting Playback Method and Device for Android Platform Based on Scalable Vector Graphics

The invention discloses an Android platform handwriting playback method based on Scalable Vector graphics, which includes the following steps: S1: identifying the P ath of each stroke generated in the drawing process; S2: saving the Path of each stroke identified into the path set P; S3: realizing the handwriting playback of the font by using listeners and PathMeasure classes. The invention saves handwriting in Path class as scalable vector graphics file, greatly reduces storage space, occupies less memory and is easy to implement playback function directly at the code level in the future; can effectively reduce the calculation amount of playback process, simplify playback code, and has good animation effect; also does not need storage, conforms to real-time, and can realize real-time playback more flexibly. Play the writing process. The invention can greatly reduce the storage space, at the same time, greatly simplify the playback code and improve the code readability.

【技术实现步骤摘要】
一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置
本专利技术涉及笔迹显示领域,更具体地,涉及一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置。
技术介绍
智能移动设备平台上的回放技术已遍布许多安卓(Android)软件中,比如:字帖类软件,画图类软件等。在市面上,大多数软件采取的回放笔迹技术,目前比较流行的两种算法:一是历史坐标回溯法,此方法需根据事先存储字迹的历史定位坐标与回放的设定参数,从数据库中检索得到后在将轨迹再在画板上重新绘制,绘制完成代码繁琐且需要较大的内存,不符合移动设备轻应用的需求;二是通过录制屏幕生成媒体文件再重放,也有存储量大的问题。Android自带的Picture类,其使用过程需要存储记录绘图操作,需要存储的媒体文件造成无益的空间占用并且不能很好体现实时性
技术实现思路
本专利技术为克服上述现有技术所述的至少一种缺陷,提供一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置。本专利技术旨在至少在一定程度上解决上述技术问题。本专利技术的首要目的是提供一种基于可缩放矢量图形的笔迹回放方法,解决现有技术中存储量大且代码繁琐的问题本专利技术的进一步目的是提供一种基于可缩放矢量图形的笔迹回放装置。为解决上述技术问题,本专利技术的技术方案如下:一种基于可缩放矢量图形的安卓平台笔迹回放方法,包括以下步骤:S1:识别绘制过程中产生的每一段笔划的Path;S2:将识别的每一段笔划的Path保存至路径集合P中;S3:利用监听器和PathMeasure类实现该字体的笔迹回放;上述方法中以相对成本较低的方式解决难题,即使用集合存储可缩放矢量图形(SVG)格式的每笔笔划,同时结合能够直接改变属性值的动画类ValueAnimator类,通过属性动画让任何对象的属性都跟着时间的改变进行变化,同时通过PathMeasure类追踪Path的坐标进行绘制定位,最终实现书写过程回放的功能,从而有效简化了代码,避免存储过多的参数以及产生媒体文件占用过大内存,也大大减少了存储空间。优选地,每一段笔划的Path保存为SVG文件,SVG是可伸缩矢量图形(ScalableVectorGraphics),Path类是SVG基本形状中最强大的一个,绘制过程中的笔迹均用Path类保存为SVG文件,由于SVG是一个纯粹的XML文件,占用内存小,能够大大地减少存储空间,也便于往后实现回放功能直接进行代码层面的操作。优选地,步骤S1的识别绘制过程中产生的每一段笔划的Path,其中识别一段笔划的Path的具体步骤中用一字体集合处理模块对Path进行处理操作,具体为:S1.1:定义L0为当前Path长度,Lt为前一Path长度,L0=Lt=0;S1.2:定义P0为当前处理Path,绘制过程中,每生成一段Path,则把该段Path存入P0,测量一次P0的长度l,令L0=l;S1.3:若L0大于Lt,则执行S1.4;若L0不大于Lt,执行S1.5;S1.4:令Lt=L0,定义Lh为历史Path长度,令Tp表示操作类型,Tp∈(0,1),其中Tp=0代表替换模式,Tp=1代表添加模式;若L0大于0,则Lh=L0,P0传入处理P0的字体集合处理模块,Tp=0;跳过步骤S1.5;S1.5:若L0不等于0或LH等于0,返回步骤S1.2;若L0等于0且LH不等于0,P0传入处理P0的字体集合处理模块,Tp=1;S1.6:在字体集合处理模块中判断Tp的值:若Tp=0,把P0与路径集合P中最后加入的Path替换;若Tp=1,把P0加入路径集合P中。Path类封装了由线段、二次曲线与三次曲线组成的复合(多轮廓)几何路径。它可以用Canvas类的drawPath方法进行绘制、填充,或者用于裁剪或以路径的方式绘制文本。由于在利用Canvas类实现绘制功能的绘画过程中,一段连续线条将产生多段Path,本步骤中只要迭代识别出该字的每段连续线条完整的一笔。优选地,步骤S2的具体步骤为:S2.1:判断路径集合P是否已创建,若未创建则线创建一个路径集合P;S2.2:定义Ps为目标Path变量,Ls为Ps的长度,传入的Path存入Ps,并测量Ps长度ls,Ls=ls;S2.3:若路径集合P为空,把Ps直接加入P;若路径集合P不为空,且Tp=1则将Ps加入至P中;若路径集合P不为空,且Tp=0则替换P中最后加入的Path;S2.4:重复步骤S2.1至S2.3直至将所有笔划的Path存入P。优选地,步骤S3的具体步骤为:S3.1:遍历路径集合P,定义Pi为获取的第i个Path;定义Si为动画状态,Si=Start,Si∈{Start,None};定义监听器A和监听器B,其中监听器A为AnimatorListener类型的监听器,监听器B为AnimatorUpdateListener类型的监听器;S3.2:通过监听器A改变动画状态,具体为:重写方法onAnimationStart,设置动画状态为Start,表示动画开始的状态为Start;重写方法onAnimationEnd,设置动画状态为None,表示动画结束的状态为None;S3.3:通过监听器B的getAnimatedValue方法获取自动更新的动画属性值m∈[0,1],当获取并更新一次动画属性值m,则:强制当前视图绘制,若Si=Start,截取该Pi进行绘制,定义Lx为Pi的部分长度,LM为Pi的完整长度,则Lx=LM*m,多次迭代,实现回放动画效果;若Si=None,则将完整笔划重绘并显示在画板上;Android的AnimatorListener类可以从动画接收通知,通知指示动画的相关事件。而Android的另一个监听类——AnimatorUpdateListener类可以通过调用getAnimatedValue函数接收每个动画帧通过ValueAnimator计算的回调值。一种基于可缩放矢量图形的安卓平台笔迹回放装置,包括:识别模块,所述识别模块用于识别绘制过程中产生的每一段笔划的Path,所述识别模块包括字体集合处理模块;封装模块,所述封装模块用于将识别的每一段笔划的Path保存至路径集合P中;动画回放模块,所述动画回放模块利用监听器和PathMeasure类实现该字体的笔迹回放。与现有技术相比,本专利技术技术方案的有益效果是:本专利技术将笔迹用Path类保存为SVG文件,大大减少存储空间,占用内存少且便于往后实现回放功能直接进行代码层面的操作;基于属性值动画原理以及ValueAnimator类实现对笔迹的回放,只需要对只需要对动画的监听去做一些操作,在监听中将这个值设置给Path的长度属性,不断更新这个属性值便可实现动画效果。能够有效降低回放过程的计算量,简化回放代码,并且具备良好的动画效果;也不需要存储,符合实时性,能更灵活地实现实时回放书写过程。本专利技术能极大减少存储空间的同时,也能极大简化回放代码,提高代码易读性。附图说明图1为一种基于可缩放矢量图形的安卓平台笔迹回放方法的流程图;图2为识别绘制过程中产生的每一段笔划的Path的流程图;图3为将识别的每一段笔划的Path保存至路径集合P中的流程图;图4为利用监听器和PathMeasure类实现该字体的笔迹回放的流程图;图5为笔迹原图展示图;图6为笔迹回放展示图;图7为一种基于可缩放矢量本文档来自技高网...

【技术保护点】
1.一种基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,包括以下步骤:S1:识别绘制过程中产生的每一段笔划的Path;S2:将识别的每一段笔划的Path保存至路径集合P中;S3:利用监听器和PathMeasure类实现该字体的笔迹回放。

【技术特征摘要】
1.一种基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,包括以下步骤:S1:识别绘制过程中产生的每一段笔划的Path;S2:将识别的每一段笔划的Path保存至路径集合P中;S3:利用监听器和PathMeasure类实现该字体的笔迹回放。2.根据权利要求1所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述每一段笔划的Path保存为可缩放矢量图形文件。3.根据权利要求2所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述步骤S1的识别绘制过程中产生的每一段笔划的Path,其中识别一段笔划的Path的具体步骤中用一字体集合处理模块对Path进行处理操作,具体为:S1.1:定义L0为当前Path长度,Lt为前一Path长度,L0=Lt=0;S1.2:定义P0为当前处理Path,绘制过程中,每生成一段Path,则把该段Path存入P0,测量一次P0的长度l,令L0=l;S1.3:若L0大于Lt,则执行S1.4;若L0不大于Lt,执行S1.5;S1.4:令Lt=L0,定义LH为历史Path长度,令Tp表示操作类型,Tp∈(0,1),其中Tp=0代表替换模式,Tp=1代表添加模式;若L0大于0,则LH=L0,P0传入处理P0的字体集合处理模块,Tp=0;跳过步骤S1.5;S1.5:若L0不等于0或LH等于0,返回步骤S1.2;若L0等于0且LH不等于0,P0传入处理P0的字体集合处理模块,Tp=1;S1.6:在字体集合处理模块中判断Tp的值:若Tp=0,把P0与路径集合P中最后加入的Path替换;若Tp=1,把P0加入路径集合P中。4.根据权利要求3所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述步骤S2的具体步骤为:S2.1:判断路径集合P是否已创建,若未创建则线创建一个路径集合P;S2.2:定义Ps为目标Path变...

【专利技术属性】
技术研发人员:梁嘉慧卢燕萍陈怡航张淑莲谢敏峰肖选良朱雄泳陈忆群张渝荣
申请(专利权)人:广东第二师范学院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1