绘制方法、装置、终端设备及存储介质

文档序号:810176 发布日期:2021-03-26 浏览:29次 >En<

阅读说明:本技术 绘制方法、装置、终端设备及存储介质 (Drawing method, drawing device, terminal equipment and storage medium ) 是由 邱海龙 黄泽宇 李永春 于 2020-12-24 设计创作,主要内容包括:本申请涉及动效和样式绘制技术领域,具体而言,涉及一种绘制方法、装置、终端设备及存储介质;所述绘制方法包括步骤:根据JSON配置文件生成绘制动效类,JSON配置文件包括分段目标的JSON配置文件;根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理;根据绘制动效类对所述分段目标进行渲染。本申请通过JSON配置文件实现各种酷炫样式的文字、图片动效。JSON配置文件实现高效开发,简便维护;通过新建绘制类、绘制代理类,解决分段目标处理的难点,通过保存函数和恢复函数形成保护层,避免场景互相干扰。(The application relates to the technical field of dynamic effect and style drawing, in particular to a drawing method, a drawing device, terminal equipment and a storage medium; the drawing method comprises the following steps: generating a drawing and braking effect class according to the JSON configuration file, wherein the JSON configuration file comprises a JSON configuration file of the segmented target; performing data processing on the segmentation target according to the drawing braking effect class, the drawing assembly class and the newly-built drawing class; and rendering the segmented target according to the drawing and braking effect class. The method and the device realize the moving effect of characters and pictures in various cool styles through the JSON configuration file. The JSON configuration file realizes efficient development and is simple and convenient to maintain; the difficulty of sectional target processing is solved by newly establishing a drawing class and a drawing agent class, and a protective layer is formed by a storage function and a recovery function to avoid scene mutual interference.)

绘制方法、装置、终端设备及存储介质

技术领域

本申请涉及样式和动效绘制技术领域,具体而言,涉及绘制方法、装置、终端设备及存储介质。

背景技术

现有安卓系统的draw绘制函数绘制文本包括步骤:绘制字符串;使用Object Anim类执行动画使文本产生动效;这种方式会导致代码量巨大,不易修改维护,也有字体排版问题。同时TextView文本通常对整段文本做样式和动效,无法对每个文字独立做不同的样式以及动效。

发明内容

本申请的目的在于,提供绘制方法、装置、终端设备及存储介质以解决上述问题。

第一方面,本申请提供的绘制方法,包括:

根据JSON配置文件生成绘制动效类,JSON配置文件包括分段目标的JSON配置文件;

根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理;

根据绘制动效类对所述分段目标进行渲染。

优选地,所述根据JSON配置文件生成绘制动效类,包括:

通过读取资源文件函数读取JSON配置文件,通过JSON库函数将JSON配置文件转换为绘制动效类。

优选地,所述分段目标为分段文本时,所述根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理包括:

将绘制动效类WidgetAnims传入文本控件的设置文本函数setText,遍历绘制动效类WidgetAnims中text数据段,将分段文本组合获取完整的数据段,所述完整的数据段具有分段标志;

利用绘制组装类SpannableStringBuilder()传入上述完整的数据段;

根据完整的数据段和新建的绘制类FontAnimReplacementSpan进行初始化;

遍历绘制动效类WidgetAnims;

将所述绘制类FontAnimReplacementSpan传入绘制代理类SingleWarpSpan完成数据段的数据处理后,利用绘制组装类SpannableStringBuilder()组装各个绘制类FontAnimReplacementSpan;

删除初始化时的绘制类FontAnimReplacementSpan。

优选地,所述分段目标为分段文本时,所述根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理包括:

将绘制动效类传入文本控件的设置文本函数,遍历绘制动效类中text数据段,将分段文本组合获取完整的数据段,所述完整的数据段具有分段标志;

利用绘制组装类传入上述完整的数据段;

根据完整的数据段、新建的绘制类和新建的临时绘制类进行初始化;

遍历绘制动效类;

所述绘制类完成数据段的数据处理后,利用绘制组装类组装各个绘制类;

删除初始化时的临时绘制类。

优选地,所述绘制类采用文本绘制类、图片绘制类和图形图像类绘制类中的一种。

优选地,所述分段标志包括起始位和结束位;所述数据段包括样式类型和动效类型。

优选地,所述绘制类的绘制函数包括用于保护分段文本的场景的保存函数和恢复函数。

优选地,所述根据绘制动效类对所述分段目标进行渲染包括:

根据绘制动效类的开始动画函数渲染分段文本的样式和动效。

优选地,所述绘制类为图形图像类绘制类时,所述绘制类的属性包括焦点样式参数:所述焦点样式参数包括颜色状态列表,所述颜色状态列表包括states状态值。

优选地,所述分段目标为分段文本时,所述根据JSON配置文件生成绘制动效类之前还包括在Windows平台根据配置选项生成JSON配置文件,包括:

在Windows平台可视化设置配置选项,将配置选项保存至绘制动效类;

根据JSON库将绘制动效类转换为JSON格式的字符串文本;

调用原生写入文本函数将JSON格式的字符串文本写入本地文本文件获取JSON配置文件。

优选地,所述配置选项包括以下各项的一项或者多项:

Type:用于定义动效类型;

Text:用于表示字符串;

Animtype:用于表示动画类型;

Alpha:用于表示文本透明度;

textColor:用于表示文本颜色;

bgColor:用于表示背景颜色;

valueFrom:用于表示文本动效开始值;

valueTo:用于表示文本动效结束值;

textStyle:用于表示文本字体形态;

Typeface:用于设置typeface对象属性;

Shader:用于表示阴影效果;

Interpolator:用于表示插值器类型;

Duration:用于表示文本动效的执行时间;

Set:用于表示动效集合;

startIndex:用于表示text起始位置;

endIndex:用于表示text结束位置;

Note:用于注释。

综上,本申请通过JSON配置文件实现各种酷炫样式的文字、图片动效。JSON配置文件实现高效开发,简便维护;通过新建绘制类、绘制代理类,解决分段目标处理的难点,通过保存函数和恢复函数形成保护层,避免场景互相干扰。

第二方面,本申请提供的绘制装置,包括:

生成模块,用于根据JSON配置文件生成绘制动效类,JSON配置文件包括分段目标的JSON配置文件;

分段处理模块,用于根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理;

渲染模块,用于根据绘制动效类对所述分段目标进行渲染。

本申请提供的绘制装置具有与上述第一方面,或第一方面的任意一种可选的实施方式所提供的绘制方法相同的有益效果,此处不作赘述。

第三方面,本申请提供的终端设备,包括处理器和存储器,存储器上存储有计算机程序,处理器用于执行计算机程序,以实现上述第一方面,或第一方面的任意一种可选的实施方式所提供的绘制方法。

本申请提供的终端设备具有与上述第一方面,或第一方面的任意一种可选的实施方式所提供的绘制方法相同的有益效果,此处不作赘述。

第四方面,本申请还提供了一种存储介质,存储介质上存储有计算机程序,计算机程序被执行时,实现上述第一方面,或第一方面的任意一种可选的实施方式所提供的绘制方法。

本申请提供的存储介质具有与上述第一方面,或第一方面的任意一种可选的实施方式所提供的绘制方法相同的有益效果,此处不作赘述。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例1的绘制方法的流程图。

图2为本申请实施例1的步骤S2的流程图。

图3为本申请实施例2的步骤S2的流程图。

图4为本申请实施例1的绘制装置的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。此外,应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

现有技术中针对文本或者图片做动效的居多,但是无法对文本的部分内容单独进行动效和样式设置,导致动效单一,选择较少。本申请旨在实现分段文本或者图片的样式和动效的实现,提供一种绘制方法,包括如下步骤:

S1.根据JSON配置文件生成绘制动效类,JSON配置文件包括分段目标的JSON配置文件;

S2.根据绘制动效类、绘制组装类和新建的绘制类对分段目标进行数据处理;

S3.根据绘制动效类对所述分段目标进行渲染。

分段目标采用分段文本时,具体如下:

请参阅图1,

S1.根据JSON配置文件生成绘制动效类,JSON配置文件包括分段文本的样式和动效对应的JSON配置文件;

具体如下,使用Windows平台设计配置工具,用户通过配置工具在可视化界面设置配置选项,比如输入文本:“我爱中国”,设置字体、颜色、字号、分段选项、动效类型、动画类型、背景颜色等,分段选项包括间隔距离,比如间隔距离值为1,则每隔一个字进行分段;也可以是单独每个文本设置对应的配置选项,在此不进行限定;分段选项也可不在此步骤设置,可通过JSON配置文件中配置选项中的起始位置和结束位置设置,在界面上选择相应的配置选项,根据选择的配置选项生成对应的JSON配置文件xxxx.json。

上述步骤在Windows平台实现,具体包括:将配置选项保存至绘制动效类;根据现有的JSON库将绘制动效类转换为字符串文本;调用原生写入文本函数将JSON格式的字符串文本写入本地文本文件获取JSON配置文件;

配置选项包括下表内容中的一项或者多项:

基于上述的JSON配置文件在Android平台进行以下步骤:

通过读取资源文件函数读取JSON配置文件,通过JSON库函数将JSON配置文件转换为绘制动效类;即通过读取资源文件函数openRawResource读取分段文本样式和动效的xxx.json配置文件,通过原生的JSON库函数gson.fromJson(jsonStr(读取xxx.json配置文件的字符串),WidgetAnims.class)转换为绘制动效类WidgetAnims。

JSON配置文件具有方便维护、易修改、代码量少等优点,本申请同样可采用INI格式或者XML格式替代JSON格式达到同样的目的。

S2.根据绘制动效类、新建的绘制类和绘制组装类对分段目标进行数据处理;

请参阅图2,

将绘制动效类传入文本控件的设置文本函数,遍历绘制动效类中text数据段,将分段文本组合获取完整的数据段,所述完整的数据段具有分段标志;

利用绘制组装类传入上述完整的数据段;

根据完整的数据段和新建的绘制类进行初始化;

遍历绘制动效类;

将所述绘制类传入绘制代理类完成数据段的数据处理;

利用绘制组装类组装各个绘制类后,删除初始化时的绘制类。

具体如下,

将绘制动效类WidgetAnims传入文本控件TextView的设置文本函数setText,或者传入在文本控件TextView中设定的自定义函数;由于通过JSON配置文件对应的文本数据段是分段文本,需要将绘制动效类中set列表里的text的数据段遍历后重新组合成完整的数据段,同时将分段数据段标志起始位start Index、结束位end Index进行定位。

使用Android原生的绘制组装类SpannableStringBuilder()传入的设置绘制类函数setSpan传入上述完整的数据段,初始化所述完整的数据段和新建的绘制类FontAnimReplacementSpan;.

遍历绘制动效类;

再将绘制类传入绘制代理类SingleWarpSpan完成数据分段处理;

整个遍历过程中使用绘制组装类的设置绘制函数setSpan组装各个绘制类后,删除初始化中的绘制类;

因为绘制类无法直接传入绘制组装类,所以需要使用绘制代理类与绘制组装类产生联系,否则无法使用原生文本控件将绘制类相关内容绘制。在遍历结束后删除初始化的绘制类是因为绘制动效类执行动画的时候,绘制类的绘制函数产生多余的绘制效果,影响整体的动画绘制效果。

所述数据段包括样式类型、动效类型、插值器、起始位和结束位,所述样式类型包括颜色,字体大小,粗细等参数,所述动效类型包括放大,旋转等参数。

所述绘制类采用文本绘制类、图片绘制类和图形图像类绘制类中的一种;本申请的方法不仅适用于文本控件,同样适用于图片控件,针对目标类型对应进行分段的处理,实现分段目标的动效和样式的绘制。

所述分段标志包括起始位和结束位;用于对分段的文本进行定位。

所述绘制类的绘制函数包括用于保护分段文本场景的函数,即为了防止分段的样式和动效的绘制互相影响,在开始动画函数绘制动效执行过程中绘制类中设置函数保护场景。上述函数包括保存函数save和恢复函数restore。数据处理时,保存函数save保存绘制的画布场景,恢复函数restore恢复绘制的画布场景,通过对分段文本对应的画布场景进行保存和恢复形成保护层,对当前绘制类的绘制函数需要绘制的内容形成保护层,避免绘制互相影响。

S3.根据绘制动效类对所述分段目标进行渲染;根据绘制动效类的开始动画函数(startAnim)(ObjectAnimator封装)渲染分段文本的样式和动效。

综上,本申请通过JSON配置文件实现各种酷炫样式的文字、图片动效。JSON配置文件实现高效开发,简便维护;通过新建绘制类、绘制代理类,解决分段目标处理的难点,通过保存函数和恢复函数形成保护层,避免场景互相干扰。

实施例2

基于实施例1,本申请的步骤S2可采用其他替代方法,具体如下:请参阅图3,

将绘制动效类传入文本控件的设置文本函数,遍历绘制动效类中text数据段,将分段文本组合获取完整的数据段,所述完整的数据段具有分段标志;

利用绘制组装类传入上述完整的数据段;

根据完整的数据段、新建的绘制类和新建的临时绘制类进行初始化;

遍历绘制动效类;

所述绘制类完成数据段的数据处理后,利用绘制组装类组装各个绘制类;

删除初始化时的临时绘制类。

临时绘制类用于初始化和遍历,绘制类用于数据段处理和后续的组装,采用区别于绘制类的临时绘制类,初始化时设置的绘制类的名称和其他属性不同于绘制类,遍历结束后删除初始化定义的临时绘制类,避免了采用绘制代理类进行分段处理。通过设置区别于绘制类的名称的临时绘制类,实现不采用绘制代理类实现分段文本的处理。

另一方面,所述绘制类为图形图像类绘制类时,所述绘制类的属性包括焦点样式参数:所述焦点样式参数包括颜色状态列表,所述颜色状态列表包括states状态值。

如果数据段里面动效类型为view,表示图形图像类drawable绘制的控件,绘制的控件的样式类型包括按钮TVUI Button,勾选,单选,多样式视图、焦点样式变化;图形图像类控件需要处理TV电视上的焦点样式变化,单击问题;焦点样式的变化使用颜色状态列表ColorStateList处理;颜色状态列表包括states状态states状态会与TextView文本控件的状态绑定,states状态包括上焦,正常状态,按下等。

通过JSON配置文件高效实现各种酷炫样式和动效的文字。同理,分段样式和动效的处理方法也适用图片和图形图像类绘制的控件。

基于与上述实施例1或者实施例2的绘制方法同样的发明构思,本申请实施例还提供了一种绘制装置,请参阅图4,绘制装置包括:

生成模块,用于根据JSON配置文件生成绘制动效类,JSON配置文件包括分段目标的JSON配置文件;

分段处理模块,用于根据绘制动效类、新建的绘制类和绘制组装类对分段目标进行数据处理;

渲染模块,用于根据绘制动效类对所述分段目标进行渲染。

所述生成模块包括读取资源文件函数和JSON库函数,所述生成模块通过读取资源文件函数读取JSON配置文件,通过JSON库函数将JSON配置文件转换为绘制动效类。

所述分段处理模块包括初始化单元、遍历单元、绘制单元和组装单元,所述初始化单元用于将绘制动效类传入文本控件的设置文本函数,遍历绘制动效类text数据段将分段文本组合获取完整的数据段;根据完整的数据段和新建的绘制类进行初始化;同时在遍历结束后删除初始化时的绘制类;遍历单元用于遍历绘制动效类;绘制单元用于将所述绘制类传入绘制代理类完成数据段的数据处理;组装单元用于利用绘制组装类组装各个绘制类。

所述渲染模块,用于根据绘制动效类的开始动画函数渲染分段文本的样式和动效。

在另一实施例中,初始化单元对新建的临时绘制类进行初始化,遍历结束后对应删除临时绘制类,绘制单元用于直接完成数据段的数据处理。

各个模块的组合,实现分段目标的样式和动效的绘制。

此外,本申请实施例还提供了一种存储介质,存储介质上存储有计算机程序,计算机程序被执行时,实现上述方法实施例所提供的绘制方法,具体可参见上述方法实施例,本申请实施例中对此不作赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请每个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是每个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请每个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

此外,需要说明的是,在本文中,诸如“第一”、“第二”、“第三”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种文本生成方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!