CN109858421B - 一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 - Google Patents
一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 Download PDFInfo
- Publication number
- CN109858421B CN109858421B CN201910069844.4A CN201910069844A CN109858421B CN 109858421 B CN109858421 B CN 109858421B CN 201910069844 A CN201910069844 A CN 201910069844A CN 109858421 B CN109858421 B CN 109858421B
- Authority
- CN
- China
- Prior art keywords
- path
- playback
- handwriting
- animation
- stroke
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于可缩放矢量图形的安卓平台笔迹回放方法,包括以下步骤:S1:识别绘制过程中产生的每一段笔划的Path;S2:将识别的每一段笔划的Path保存至路径集合P中;S3:利用***和PathMeasure类实现该字体的笔迹回放。本发明将笔迹用Path类保存为可缩放矢量图形文件,大大减少存储空间,占用内存少且便于往后实现回放功能直接进行代码层面的操作;能够有效降低回放过程的计算量,简化回放代码,并且具备良好的动画效果;也不需要存储,符合实时性,能更灵活地实现实时回放书写过程。本发明能极大减少存储空间的同时,也能极大简化回放代码,提高代码易读性。
Description
技术领域
本发明涉及笔迹显示领域,更具体地,涉及一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置。
背景技术
智能移动设备平台上的回放技术已遍布许多安卓(Android)软件中,比如:字帖类软件,画图类软件等。在市面上,大多数软件采取的回放笔迹技术,目前比较流行的两种算法:一是历史坐标回溯法,此方法需根据事先存储字迹的历史定位坐标与回放的设定参数,从数据库中检索得到后在将轨迹再在画板上重新绘制,绘制完成代码繁琐且需要较大的内存,不符合移动设备轻应用的需求;二是通过录制屏幕生成媒体文件再重放,也有存储量大的问题。Android自带的Picture类,其使用过程需要存储记录绘图操作,需要存储的媒体文件造成无益的空间占用并且不能很好体现实时性
发明内容
本发明为克服上述现有技术所述的至少一种缺陷,提供一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置。
本发明旨在至少在一定程度上解决上述技术问题。
本发明的首要目的是提供一种基于可缩放矢量图形的笔迹回放方法,解决现有技术中存储量大且代码繁琐的问题
本发明的进一步目的是提供一种基于可缩放矢量图形的笔迹回放装置。
为解决上述技术问题,本发明的技术方案如下:
一种基于可缩放矢量图形的安卓平台笔迹回放方法,包括以下步骤:
S1:识别绘制过程中产生的每一段笔划的Path;
S2:将识别的每一段笔划的Path保存至路径集合P中;
S3:利用***和PathMeasure类实现该字体的笔迹回放;
上述方法中以相对成本较低的方式解决难题,即使用集合存储可缩放矢量图形(SVG)格式的每笔笔划,同时结合能够直接改变属性值的动画类ValueAnimator类,通过属性动画让任何对象的属性都跟着时间的改变进行变化,同时通过PathMeasure类追踪Path的坐标进行绘制定位,最终实现书写过程回放的功能,从而有效简化了代码,避免存储过多的参数以及产生媒体文件占用过大内存,也大大减少了存储空间。
优选地,每一段笔划的Path保存为SVG文件,SVG是可伸缩矢量图形(ScalableVector Graphics),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
本实施例提供的一种基于可缩放矢量图形的安卓平台笔迹回放方法,如图1,包括以下步骤:
S1:识别绘制过程中产生的每一段笔划的Path;
S2:将识别的每一段笔划的Path保存至路径集合P中;
S3:利用***和PathMeasure类实现该字体的笔迹回放;
每一段笔划的Path保存为SVG文件;
步骤S1的识别绘制过程中产生的每一段笔划的Path,其中识别一段笔划的Path的具体步骤中用一字体集合处理模块对Path进行处理操作,如图2,具体为:
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中。
步骤S2的具体步骤如图3,具体为:
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的具体步骤如图4,具体为:
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,则将完整笔划重绘并显示在画板上。
在具体实施过程中,如图5和图6,图5表示笔迹原图,精油本实施例提供的方法进行笔迹还原,具体过程展示如图6所示,可以很好的还原笔迹。
实施例2
本实施例提供一种基于可缩放矢量图形的安卓平台回放装置,如图7,包括:
识别模块,所述识别模块用于识别绘制过程中产生的每一段笔划的Path,所述识别模块包括字体集合处理模块;
封装模块,所述封装模块用于将识别的每一段笔划的Path保存至路径集合P中;
动画回放模块,所述动画回放模块利用***和PathMeasure类实现该字体的笔迹回放。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (5)
1.一种基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,包括以下步骤:
S1:识别绘制过程中产生的每一段笔划的Path;
S2:将识别的每一段笔划的Path保存至路径集合P中;
S3:利用***和PathMeasure类实现该路径集合P的笔迹回放;
所述步骤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中。
2.根据权利要求1所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述每一段笔划的Path保存为可缩放矢量图形文件。
3.根据权利要求2所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述步骤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。
4.根据权利要求3所述的基于可缩放矢量图形的安卓平台笔迹回放方法,其特征在于,所述步骤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,则将完整笔划重绘并显示在画板上。
5.一种基于可缩放矢量图形的安卓平台笔迹回放装置,其特征在于,所述装置应用权利要求1所述的基于可缩放矢量图形的安卓平台笔迹回放方法,所述装置包括:
识别模块,用于识别绘制过程中产生的每一段笔划的Path,所述识别模块包括字体集合处理模块;
封装模块,所述封装模块用于将识别的每一段笔划的Path保存至路径集合P中;
动画回放模块,所述动画回放模块利用***和PathMeasure类实现该字体的笔迹回放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910069844.4A CN109858421B (zh) | 2019-01-24 | 2019-01-24 | 一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910069844.4A CN109858421B (zh) | 2019-01-24 | 2019-01-24 | 一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109858421A CN109858421A (zh) | 2019-06-07 |
CN109858421B true CN109858421B (zh) | 2023-06-06 |
Family
ID=66896022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910069844.4A Active CN109858421B (zh) | 2019-01-24 | 2019-01-24 | 一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109858421B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625171B (zh) * | 2020-07-28 | 2020-11-03 | 深圳市千分一智能技术有限公司 | 笔画显示方法、装置、设备及可读存储介质 |
CN115280265A (zh) * | 2020-10-29 | 2022-11-01 | 京东方科技集团股份有限公司 | 一种基于安卓***的笔迹显示的方法、装置及存储介质 |
CN113760432A (zh) * | 2021-08-30 | 2021-12-07 | 浙江万朋教育科技股份有限公司 | 一种基于H5 Canvas实现还原手写笔迹的涂鸦方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750413A (zh) * | 2015-03-06 | 2015-07-01 | 北京华夏翰科科技有限公司 | 一种实现手写笔迹回放的方法及*** |
CN107180443A (zh) * | 2017-04-28 | 2017-09-19 | 深圳市前海手绘科技文化有限公司 | 一种手绘动画生成方法及其装置 |
CN108829480A (zh) * | 2018-06-11 | 2018-11-16 | 深圳市德安里科技有限公司 | 电子手写板的书画过程记录方法、装置、设备和存储介质 |
CN109242936A (zh) * | 2018-08-29 | 2019-01-18 | 广州优视网络科技有限公司 | 绘制目标内容数据的方法、装置、存储介质及电子设备 |
-
2019
- 2019-01-24 CN CN201910069844.4A patent/CN109858421B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750413A (zh) * | 2015-03-06 | 2015-07-01 | 北京华夏翰科科技有限公司 | 一种实现手写笔迹回放的方法及*** |
CN107180443A (zh) * | 2017-04-28 | 2017-09-19 | 深圳市前海手绘科技文化有限公司 | 一种手绘动画生成方法及其装置 |
CN108829480A (zh) * | 2018-06-11 | 2018-11-16 | 深圳市德安里科技有限公司 | 电子手写板的书画过程记录方法、装置、设备和存储介质 |
CN109242936A (zh) * | 2018-08-29 | 2019-01-18 | 广州优视网络科技有限公司 | 绘制目标内容数据的方法、装置、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
PathMeasure类轨迹动画;按劳分配;《CSDN》;20170525;1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109858421A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109858421B (zh) | 一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置 | |
US8248420B2 (en) | Method and system for displaying animation with an embedded system graphics API | |
EP3985612A1 (en) | Method and device for rendering animation, computer readable storage medium, and computer apparatus | |
CN109389661B (zh) | 一种动画文件转化方法及装置 | |
US20220139352A1 (en) | Method and Device for Image Composition, Electronic Device and Storage Medium | |
CN108010112A (zh) | 动画处理方法、装置及存储介质 | |
JP5439456B2 (ja) | 電子コミック編集装置、方法及びプログラム | |
CN105069104B (zh) | 一种动态漫画的生成方法与*** | |
WO2021248705A1 (zh) | 图像渲染方法、装置、计算机程序和可读介质 | |
CN102208180B (zh) | 一种机顶盒快速显示矢量字体的方法 | |
US20070171222A1 (en) | Application-independent method for capturing three-dimensional model data and structure for viewing and manipulation | |
CN108205960B (zh) | 一种文字渲染的方法和装置、电子地图制作***及导航*** | |
CN110415319B (zh) | 基于ppt的动画制作方法、装置与电子设备和存储介质 | |
CN115349136A (zh) | 基于位图图元的图形处理***,方法和gpu | |
CN102932607B (zh) | 一种字幕图文信息生成方法及装置 | |
CN110727386A (zh) | 一种用于电子白板的操作图元方法、***及存储介质 | |
CN101800043A (zh) | 一种显示矢量字体的方法和终端 | |
CN112135073B (zh) | 一种基于fpga的图像字符叠加方法 | |
US20140258921A1 (en) | System and method for ergonomic placement of an object or cursor on a computer display | |
CN111161127A (zh) | 图片资源渲染优化方法 | |
CN110737372A (zh) | 一种用于电子白板的新增图元操作方法、***及电子白板 | |
CN114625990A (zh) | 用于对网页端网格数据渲染的方法、装置、设备和介质 | |
US20210289266A1 (en) | Video playing method and apparatus | |
US20080127062A1 (en) | Method and computer readable medium storing instructions for creating open vector graphic contents | |
CN103544931B (zh) | 一种文字的生成方法、装置及应用终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |