一种基于安卓系统的文本渐变方法和系统与流程

文档序号:11154387阅读:360来源:国知局
一种基于安卓系统的文本渐变方法和系统与制造工艺

本发明涉及安卓开发领域,具体涉及一种基于安卓系统的文本渐变方法和系统。



背景技术:

在Android开发过程中,经常会有一些增加应用交互效果的需求,比如增加一些动画,或高亮显示等。这些应用交互效果基本都是动画交互效果,但是针对文本的交互效果却很少。

文字颜色的渐变是深受用户喜爱的文本的交互效果,但是却难以通过代码设置达到文本渐变的效果。通常来说,现有技术通过开启一个定时器对象,设置好数值后每隔一段时间调用一次。但是使用该方法需要计算每次颜色的变化数值,并且还需要将定时器的消息传递到UI线程中执行。

还有一种实现文字渐变的方法是创建两个文本控件(TextView),一个文本控件覆盖在另一个上,上面的文本控件为开始的文本颜色,被覆盖的为目标颜色,当需要渐变时,上面的文本控件执行淡出动画,下面的文本控件执行淡入动画,从而达到文本颜色的渐变。但是当上面的文本开始透明时,其显示的颜色其实是上面的颜色和被覆盖文本颜色的叠加,导致文本的颜色不自然。并且该方案额外创建了一个文本控件,会浪费系统资源,也多了一个需要维护状态的对象。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种渐变视觉效果好,节约系统资源的基于安卓系统的文本渐变方法和系统。

为达到以上目的,本发明采取的技术方案是:一种基于安卓系统的文本渐变方法,创建一个ValueAnimator对象,其中ValueAnimator对象的参数包括初始值、目标值和执行时间,将文本控件的初始颜色设为初始值,将需要变化的颜色值设为目标值,设定由初始值变化到目标值的执行时间,添加一监听器获取ValueAnimator对象计算的当前颜色数值,并将当前颜色数值赋予文本控件。

在上述技术方案的基础上,通过调用ValueAnimator对象的addUpdateListener方法添加所述监听器,并使用getAnimatedValue方法获取当前颜色数值。

在上述技术方案的基础上,所述文本渐变方法还包括处理变化量冲突的步骤,其包括:

定义一个中间对象,所述中间对象用来存储当前颜色数值,若当前的ValueAnimator对象执行过程中用户再次发起文本渐变,则关闭当前的ValueAnimator对象并创建新的ValueAnimator对象,将当前颜色数值设为新的ValueAnimator的初始值。

在上述技术方案的基础上,若ValueAnimator对象为不为null,则判断该ValueAnimator对象在执行过程中。

在上述技术方案的基础上,所述文本渐变方法还包括添加插值器,所述插值器用于使用三角函数定义执行时间和当前颜色数值之间的关系。

在上述技术方案的基础上,所述插值器的公式为:Y=Math.sin(2/Math.PI*x),其中x是当前插值器的单位时间,Y表示当前颜色数值,Math.sin表示三角函数的sin函数,Math.PI表示圆周率数值。

在上述技术方案的基础上,使用16进制表示颜色数值。

本发明还提高一种基于安卓系统的文本渐变系统,包括:

对象创建模块,所述对象创建模块用于创建一个ValueAnimator对象,其中ValueAnimator对象的参数包括初始值、目标值和执行时间,将文本控件的初始颜色设为初始值,将需要变化的颜色值设为目标值,设定由初始值变化到目标值的执行时间;

监听模块,所述监听模块用于获取ValueAnimator对象计算的当前颜色数值,并将当前颜色数值赋予文本控件。

在上述技术方案的基础上,所述系统还包括冲突处理模块,所述冲突处理模块用于定义一个中间对象,所述中间对象用来存储当前颜色数值,若当前的ValueAnimator对象执行过程中用户再次发起文本渐变,则关闭当前的ValueAnimator对象并创建新的ValueAnimator对象,并将当前颜色数值设为新的ValueAnimator的初始值。

在上述技术方案的基础上,所述系统还包括插值模块,所述插值模块用于使用三角函数定义执行时间和当前颜色数值之间的关系。

与现有技术相比,本发明的优点在于:

1、本发明的通过创建ValueAnimator对象并将ValueAnimator对象与文本控件相关联的方式完成文本的渐变,不需要重复的调用定时器对象,也不需要额外创建文本控件,并且渐变视觉效果自然。

2、通过定义用来存储当前颜色数值的中间对象来避免因一个文字渐变未完成是用户发起新的文字渐变导致的颜色错乱。

3、通过添加插值器,并使用插值器定义文字颜色数值与执行时间之间关系,使文字颜色的变化更加平滑自然,提高用户体验。

附图说明

图1为本发明基于安卓系统的文本渐变方法流程图;

图2为本发明基于安卓系统的文本渐变系统示意图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

本发明一种基于安卓系统的文本渐变方法。本方法使用ValueAnimator对象完成文本颜色的渐变。在Android系统中ValueAnimator对象的作用是数值的变化器,ValueAnimator对象的参数包括一个初始值、一个目标值和执行时间。设定了初始值、目标值和执行时间后,其能在规定之间内将一个数值从初始值增长或减少到目标值。

请参考图1,图1为本发明基于安卓系统的文本渐变方法流程图,其包括以下步骤:

S1:通过ValueAnimator的ofInt方法创建一个ValueAnimator对象,其中ValueAnimator对象的参数包括初始值、目标值和执行时间,将文本控件的初始颜色设为初始值,并使用16进制表示文本颜色数值。将需要变化的颜色值设为目标值,设定由初始值变化到目标值的执行时间,在本实施例中,执行时间选用600毫秒,时间过长的话等待时间变长,会感觉颜色切换的变化率不明显,而太短太快的话,则会感觉不到变化的过程。

同时,在第一次创建ValueAnimator对象之后,还需要进行处理变化量冲突的步骤,判断当前是否有之前创建的ValueAnimator对象是否已经执行完,即判断当前是否在进行文本渐变。若第一次创建ValueAnimator对象的名称为a对象,变化量冲突的步骤具体如下:

定义一个中间对象m,中间对象m的类型为16进制的颜色数据,中间对象m用来存储当前颜色数值,a对象创建后每次更新都将当前的颜色数值的数据复制给改中间对象m,当用户再发起一次颜色渐变时,会创建一个新的ValueAnimator对象,在创建一个新的ValueAnimator对象时,判断a对象的值是否为null,若a对象的值为null,则a对象已经执行完毕,则可以直接创建新的ValueAnimator对象,若a对象的值不为null,则调用ValueAnimator对象的cannel方法关闭a对象,并将中间对象m中存储的颜色数值设为新的ValueAnimator对象初始值。从而避免了两次颜色渐变之间的无缝对接,避免出现颜色错乱。

S2:添加一监听器获取ValueAnimator对象计算的当前颜色数值,并将当前颜色数值赋予文本控件。

具体来说,调用ValueAnimator的addUpdateListener方法对其添加一个监听器,通过传入AnimatorUpdateListener的接口实现在onAnimationUpdate方法中回调当前的变化量的ValueAnimator对象,然后在onAnimationUpdate方法中调用ValueAnimator对象的getAnimatedValue方法获取当前的颜色值,再后通过TextView的setTextColor方法来改变颜色。现有技术设置两个文本控件进行淡入淡出动画需要分别进行动画效果设置,而本发明仅需要一个文本控件,动画渲染消耗降低,可有效节省系统的资源。另外,从代码的实现角度来说,两个文本控件的状态判断在实现上比一个文本控件的实现复杂度将高不少。

S3:添加Interpolator(插值器),使用插值器可使颜色渐变更加平滑自然。ValueAnimator对象设置插值器的方法是setInterpolator,安卓系统本身内置了一些通用的插值器,插值器在ValueAnimator对象中的作用是定义动画变化过程中的属性变化规则。比如一个数值在时间1时刻的值是1,当时间到2时其数值是3,时间到3时刻时其数值时9那么1到2的变化量就是3-1=2,时刻2到3的变化量就是9-3=6。插值器的作用就是定义执行时间和变化量的关系。在本发明中,为了提供更好的用户体验,让颜色渐变时更加平滑自然,选用了接口对象TimeInterpolator,TimeInterpolator允许自定义时间和变化量的关系。因此,可选定恰当的计算方式定义自定义执行时间和颜色数值变化量之间的关系。

在本实施例中,选用三角函数计算执行时间和变化量之间的关系。具体计算公式如下:Y=Math.sin(2/Math.PI*x),其中x是当前插值器的的单位时间,即文本渐变动画中一帧的时间,Y表示当前颜色数值,Math.sin表示三角函数的sin函数,Math.PI表示圆周率数值。使用本计算方法得到的文字渐变效果平滑自然,可有效的避免文字颜色机械性变化,从视觉上满足用户的自然感官效果。

S4:调用ValueAnimator对象的start方法开始执行,即可得到文本渐变效果。

本发明还提供一种基于安卓系统的文本渐变系统,其包括:

对象创建模块,所述对象创建模块用于创建一个ValueAnimator对象,其中ValueAnimator对象的参数包括初始值、目标值和执行时间,将文本控件的初始颜色设为初始值,将需要变化的颜色值设为目标值,设定由初始值变化到目标值的执行时间;

监听模块,所述监听模块用于获取ValueAnimator对象计算的当前颜色数值,并将当前颜色数值赋予文本控件。

冲突处理模块,所述冲突处理模块用于定义一个中间对象,所述中间对象用来存储当前颜色数值,若当前的ValueAnimator对象执行过程中用户再次发起文本渐变,则关闭当前的ValueAnimator对象并创建新的ValueAnimator对象,并将当前颜色数值设为新的ValueAnimator的初始值。

插值模块,所述插值模块用于使用三角函数定义执行时间和当前颜色数值之间的关系。具体计算公式如下:Y=Math.sin(2/Math.PI*x),其中x是当前插值器的的单位时间,即文本渐变动画中一帧的时间,Y表示当前颜色数值,Math.sin表示三角函数的sin函数,Math.PI表示圆周率数值。使用本计算方法得到的文字渐变效果平滑自然,可有效的避免文字颜色机械性变化,从视觉上满足用户的自然感官效果。

本发明的对象创建模块通过创建ValueAnimator对象并将ValueAnimator对象与文本控件相关联的方式完成文本的渐变,不需要重复的调用定时器对象,也不需要额外创建文本控件,并且渐变视觉效果自然。并通过定义用来存储当前颜色数值的中间对象来避免因一个文字渐变未完成是用户发起新的文字渐变导致的颜色错乱。

插值模块定义文字颜色数值与执行时间之间关系,使文字颜色的变化更加平滑自然,提高用户体验。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1