Android动画执行方法、装置、终端及可读介质与流程

文档序号:16364250发布日期:2018-12-22 08:20阅读:198来源:国知局
Android动画执行方法、装置、终端及可读介质与流程

本发明实施例涉及计算机技术,尤其涉及一种android动画执行方法、装置、终端及可读介质。

背景技术

本发明实施例中动画是指,android终端通过代码绘制的控件数值改变的动画,例如可以是进度动画,进度动画可以理解为进度条控件加载过程的动画,其中进度动画设置有目标值。示例性的,当进度动画为0%到50%的动画时,则目标值为50;当进度动画为0%到80%的动画时,则目标值为80。

现有技术中,当进度动画1执行过程中,无法动态改变动画目标值,只能停止进度动画1,并开启更改后目标值对应的进度动画2。示例性的,当0%到50%的进度动画执行过程中,若接收服务器下发的改变目标值为80的消息时,只能停止0%到50%的进度动画,并开启0%到80%的进度动画。这就导致了在改变动画目标值时,进度动画1开始有一定进度,切换为进化动画2使进度条突变为0,然后再逐渐变大为目标值,造成了界面不友好,降低了用户体验。



技术实现要素:

有鉴于此,本发明实施例提供了一种android动画执行方法、装置、终端及可读介质,实现了在动画执行过程中动态改变动画目标值,使动画执行更加流畅,提升了用户体验。

第一方面,本发明实施例提供了一种android动画执行方法,包括:

接收目标值更改消息,根据所述目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,并根据所述第二动画的起始值设置第二动画的开启值,其中,所述第二动画的开启值小于所述第二动画的起始值;

调用动画构建方法,根据所述第二动画的起始值以及第二动画的结束值构建第二动画;

调用第一动画监听函数确定第一动画的执行动画值,并于所述执行动画值等于第二动画的开启值时,调用动画开启方法开启第二动画。

可选的,所述根据所述目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,包括:

根据所述目标更改消息确定改变后的目标值,调用数值定义方法定义第二动画的结束值等于改变后的目标值;

将预定义的第一动画的结束值减去预设值,调用数值定义方法定义第二动画的起始值等于第一动画的结束值减去预设值后的数值。

可选的,所述根据所述第二动画的起始值设置第二动画的开启值,包括:

将所述第二动画的起始值减去所述第二动画的开启耗时值,并将所述第二动画的起始值与所述第二动画的开启耗时值的差值设置为第二动画的开启值。

可选的,所述调用第一动画监听函数确定第一动画的执行动画值,包括:

在第一动画执行过程中,调用预添加的第一动画监听函数中的回调监听方法,确定第一动画的执行动画值。

可选的,所述回调监听方法包含有预设值动画类型的入参参数animation;

相应的,调用预添加的第一动画监听函数中的回调监听方法,确定第一动画的执行动画值,包括:

调用预添加的第一动画监听函数中的回调监听方法中的getanimatedvalue()方法获取入参参数animation的当前属性值,将所述当前属性值确定为第一动画的执行动画值。

可选的,在所述调用第一动画监听函数确定第一动画的执行动画值之后,还包括:

根据所述第一动画的执行动画值更新控件信息。

可选的,在所述接收目标值更改消息之前,还包括:

定义值动画类型,并调用动画构建方法,根据预定义的第一动画的起始值以及第一动画的结束值构建值动画类型的第一动画;

调用动画开启方法开启第一动画。

第二方面,本发明实施例提供了一种android动画执行装置,包括:

数值定义模块,用于接收目标值更改消息,根据所述目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,并根据所述第二动画的起始值设置第二动画的开启值,其中,所述第二动画的开启值小于所述第二动画的起始值;

第二动画构建模块,用于调用动画构建方法,根据所述第二动画的起始值以及第二动画的结束值构建第二动画;

第二动画开启模块,用于调用第一动画监听函数确定第一动画的执行动画值,并于所述执行动画值等于第二动画的开启值时,调用动画开启方法开启第二动画。

第三方面,本发明实施例提供了一种终端,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的android动画执行方法。

第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的android动画执行方法。

本发明实施例提供的一种android动画执行方法、装置、终端及可读介质,在第一动画执行过程中,当接收到服务器下发的目标值更改消息后,立即根据下发的目标值更改消息进行了第二动画的构建,从而减少了第二动画执行周期时长;设置第二动画的开启值,并于第一动画的执行动画值为第二动画的开启值时开启第二动画,而并非在第一动画执行结束后开启第二动画,从而使第一动画与第二动画衔接更加流畅,实现了在动画执行过程中动态改变动画目标值,使动画执行更加流畅,提升了用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的一种android动画执行方法流程图;

图2是本发明实施例二提供的一种android动画执行装置结构示意图;

图3是本发明实施例三提供的一种终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1是本发明实施例一提供的一种android动画执行方法流程图,本实施例可适用于第一动画执行过程中动态改变目标值的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。

参见图1,该android动画执行方法,应用于第一动画执行过程中,包括如下步骤:

s110、接收目标值更改消息,根据目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,并根据第二动画的起始值设置第二动画的开启值,其中,第二动画的开启值小于第二动画的起始值。

其中,第一动画和第二动画可以理解为,android终端通过代码绘制的控件数值改变的任意动画,例如可以是进度动画,进度动画可以理解为进度条控件信息更改过程的动画。其中,第一动画类型与第二动画类型相同,可以皆为预设值动画valueanimator类型;其中,值动画valueanimator类型具体可以通过如下方法进行定义:

publicclassvalueanimator{};

其中,valueanimator类为public共有类型,使得其他类具备该值动画类的访问权限。其中,值动画类的类名是valueanimator,该值动画的类名可以根据研发人员需求进行更改,在此不做限定。

其中,在构造动画之前,需要调用数值定义方法分别定义两个全局变量,用以表示动画的起始值和结束值,并根据定义的起始值和结束值进行动画的构建。示例性的,可以调用数值定义方法分别定义两个全局变量,用以表示动画的起始值和结束值,具体可以通过如下方法定义:

privateintstartvalue=0;

privateintendvalue=80;

其中,startvalue表示动画的起始值,endvalue表示动画的结束值,且起始值和结束值解为私有整数类型数值。

其中,当执行的动画由一个子动画构成时,则该子动画的结束值可以理解为执行的动画的目标值;当执行的动画由多个子动画衔接而成时,则最后执行的子动画的结束值可以理解为执行的动画的目标值。示例性的,若执行的动画由一个0%到50%的进度动画构成时,则可以将0%到50%的进度动画的结束值50理解为执行的动画的目标值;若执行的动画由0%到50%的进度动画与30%到80%的进度动画衔接而成的动画时,则可以将后执行的30%到80%的进度动画的结束值80理解为执行的动画的目标值。

在第一动画执行过程中,若接收到服务器下发的目标值更改消息,则需要构建一个新的第二动画,并使第二动画与第一动画的执行过程衔接,从而生成一个目标值更改后完整、流畅的执行动画。在构建第二动画前,需要定义第二动画的起始值和结束值,可以将目标值更改消息中改变后的目标值定义为第二动画的结束值;并根据第一动画的结束值定义第二动画的起始值,具体可以使第二动画的起始值小于等于第一动画的结束值,也就是使第一动画和第二动画之间存在同步执行的部分动画,使第一动画和第二动画之间的衔接更加流畅,视觉上无法感知为两个动画执行,从而给人更加流畅的动画观看体验。

其中,由于第二动画的开启需消耗一定时长,因此需要设置小于第二动画的起始值的第二动画的开启值,为第二动画的开启预留一定时长。从而使得第二动画根据第二动画的开启值开启后,可以与第一动画精准同步,从而提高了第一动画和第二动画的衔接精度,保证了动画的流畅度。

可选的,根据目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,包括:

根据目标更改消息确定改变后的目标值,调用数值定义方法定义第二动画的结束值等于改变后的目标值;将预定义的第一动画的结束值减去预设值,调用数值定义方法定义第二动画的起始值等于第一动画的结束值减去预设值后的数值。

其中,可以从服务器下发的目标更改消息中解析出更改后的目标值,具体可以是识别目标更改消息中目标值的标识,并获取目标值标识对应的数值。其中,可以将改变后的目标值赋值给第二动画的结束值。其中,第一动画的结束值为构造第一动画前预先定义的数值。其中,预设值大于等于0,且小于第一动画的结束值;其中,当预设值为0时,即将第一动画的结束值设置为第二动画的起始值,使第二动画和第一动画在第一动画的结束值位置同时执行,达到第一动画和第二动画衔接的目的。优选的,预设值可以根据第一动画的结束值设置,例如预设值可以是第一动画的结束值的预设比例的取整数值,具体可以是第一动画的结束值的5%或10%的取整数值。示例性的,当第一动画的结束至为50时,预设比例为5%,则50×5%=2.5,取整之后为3,则将3作为预设值。其中,预设比例可以根据研发人员的具体需求进行设置,在此不做具体限定。

其中,将第一动画的结束值减去预设值的数值定义为第二动画的起始值,可以保证第二动画的起始值小于等于第一动画的结束值,使第一动画和第二动画之间存在同步执行的部分动画,使第一动画和第二动画之间的衔接更加流畅,视觉上无法感知为两个动画执行,从而给人更加流畅的动画观看体验。

可选的,根据第二动画的起始值设置第二动画的开启值,包括:

将第二动画的起始值减去第二动画的开启耗时值,并将第二动画的起始值与第二动画的开启耗时值的差值设置为第二动画的开启值。

其中,第二动画的开启耗时可以是研发人员设置的动画开启耗时经验值,也可以是参照第一动画的开启耗时,还可以是第二动画开启前android终端内部记录的历史动画开启耗时的平均耗时。

其中,第二动画的开启耗时值,可以理解为第二动画的开启耗时对应的第一动画的每个执行动画值之间的时间间隔的取整整数倍。示例性的,当第一动画为0%到50%的进度动画,执行周期为2000ms,则1、2、3…49、50可以理解为第一动画的执行动画值,第一动画执行0到1,1到2...49到50的各执行动画值之间的时间间隔相同,皆为t=2000ms/50=40ms。此时,若第二动画的开启耗时为80ms,则第二动画的开启耗时值为80/40=2;若第二动画的开启耗时为100ms,则第二动画的开启耗时值为100/40=2.5,取整数后为3,则开启耗时值为3。

其中,可以将第二动画的起始值减去第二动画的开启耗时值的差值设置为第二动画的开启值,使第二动画的开启值小于第二动画的起始值,为第二动画开启预留一定时长。从而使得第二动画根据第二动画的开启值开启后,可以与第一动画精准同步,从而提高了第一动画和第二动画的衔接精度,保证了动画的流畅度。

s120、调用动画构建方法,根据第二动画的起始值以及第二动画的结束值构建第二动画。

其中,调用动画构建方法,根据第二动画的起始值以及第二动画的结束值构建第二动画,具体可以通过如下方法构建:

valueanimatormvalueanimator2=valueanimator.ofint(startvalue2,endvalue2);

其中,startvalue2表示第二动画的起始值,endvalue2表示第二动画的结束值;其中,第二动画的类型为值动画valueanimator类型;其中,第二动画的执行动画值定义为int整数类型,即执行动画值皆为正整数;其中,第二动画的名称是mvalueanimator2,第二动画的名称可以根据研发人员需求进行更改,在此不做限定。

其中,在第二动画构建完成后,可以设置第二动画的执行周期;其中,执行周期指动画从起始值到结束值执行全过程所要用的时间;其中,可以调用执行周期设置方法进行第二动画执行周期的设置,具体可以通过如下方法设置:

mvalueanimator2.setduration(xxx);

其中,xxx标识执行周期时长,单位为毫秒ms,可以设置为500、1000或2000等。

优选的,第二动画的执行周期可以与第一动画预设的执行周期相对应,也可以理解为第二动画的执行动画值之间的时间间隔与第一动画的执行动画值之间的时间间隔相同。其中,动画的执行动画值之间的时间间隔,可以理解为动画的执行动画值更新周期,即优选的,第二动画的执行动画值的更新周期与第一动画值的更新周期相同。

示例性的,当第一动画为0%-80%的进度动画,执行周期为2000ms,执行动画值之间的时间间隔为t1=2000ms/80=25ms,即第一动画的执行动画值的更新周期为25ms。则第二动画的执行动画值之间的时间间隔优选为25ms,即第二动画的执行动画值的更新周期与第一动画值的更新周期相同。当第二动画为60%-90%的执行动画时,则第二动画的执行周期优选为t=t1×(90-60)=750ms。

通过第一动画的执行周期可求取第一动画的执行动画值之间的时间间隔,确定第一动画的执行动画值的更新周期。从而可以设置第二动画的执行动画值更新周期与第一动画的执行动画值更新周期一致,使第二动画与第一动画在同步执行部分可以更加精准的同步,提高了衔接后动画的整体流畅度,提高了用户体验。此外,通过第一动画的执行动画值的更新周期可确定第二动画的开启耗时值,从而可以确认第二动画的开启值,提高了第二动画和第一动画的衔接精度。

s130、调用第一动画监听函数确定第一动画的执行动画值,并于执行动画值等于第二动画的开启值时,调用动画开启方法开启第二动画。

其中,执行动画值可以理解为第一动画从起始值到结束值之间步长为1的整数数值。例如,当第一动画为0%到30%的进度动画时,第一动画的执行动画值可以是1、2、3...29、30。其中,可以通过调用第一动画监听函数,监听第一动画执行过程中的当前的执行动画值。可以在当前的执行动画值为第二动画开启值时,开启第二动画,从而保证了经过第二动画开启耗时开启第二动画后,第二动画与第一动画精准衔接。

其中,动画开启方法具体可以是mvalueanimator2.start()方法,通过调用start方法可以实现第二动画mvalueanimator2的开启。并且,当动画监听函数确定第一动画的执行动画值等于动画结束值时,可以结束动画执行。

可选的,调用第一动画监听函数确定第一动画的执行动画值,包括:

在第一动画执行过程中,调用预添加的第一动画监听函数中的回调监听方法,确定第一动画的执行动画值。

其中,第一动画监听函数具体可以通过如下方法添加:

mvalueanimator.addupdatelistener(mupdatelistener);

其中,通过addupdatelistener方法可实现在第一动画中添加监听函数;其中mupdatelistener对象为第一动画的监听器对象,即第一动画监听函数。

其中,监听器对象mupdatelistener的具体可通过如下方法定义:

其中,onanimationupdate表示第一动画的监听器对象中的回调监听方法。其中,通过第一动画监听函数中的回调监听方法可以监听第一动画的当前执行动画值。从而可以控制第二动画在第一动画的执行动画值为第二动画的开启值时,开启第二动画。

可选的,回调监听方法包含有预设值动画类型的入参参数animation;

相应的,调用预添加的第一动画监听函数中的回调监听方法,确定第一动画的执行动画值,包括:

调用预添加的第一动画监听函数中的回调监听方法中的getanimatedvalue()方法获取入参参数animation的当前属性值,将当前属性值确定为第一动画的执行动画值。

其中,在回调监听方法onanimationupdate中包含有一个值动画valueanimator类型的入参参数animation,可以将入参参数animation的当前属性值确定为第一动画的执行动画值。

其中,获取入参参数animation的当前属性值,具体可以通过如下方法实现:

intanimatorvalue=(int)animation.getanimatedvalue();

其中,通过getanimatedvalue方法可以实现获取animation的当前属性值,将当前属性值赋值给定义的整型数值animatorvalue,则animatorvalue表示为第一动画的执行动画值。通过获取到第一动画的执行动画值,可以控制第二动画的开启时机,从而使开启第二动画后第二动画可以与第一动画精准衔接。

可选的,在调用第一动画监听函数确定第一动画的执行动画值之后,还包括:根据第一动画的执行动画值更新控件信息。

其中,在通过回调监听方法onanimationupdate获取第一动画的执行动画值animatorvalue之后,可以根据执行动画值更新空间信息。示例性的,当控件为进度条空间时,控件信息为进度条的进度信息,更新进度条的进度信息具体可以通过如下方法实现:

progressbar.setprogress(animatorvalue);

其中,progressbar为进度条的一个示例对象,通过调用setprogress方法可以根据执行动画值animatorvalue更新进度信息。

可选的,在接收目标值更改消息之前,还包括:

定义值动画类型,并调用动画构建方法,根据预定义的第一动画的起始值以及第一动画的结束值构建值动画类型的第一动画;调用动画开启方法开启第一动画。

其中,可以根据第一动画的起始值及结束值,调用动画构建方法进行第一动画的构建,构建的第一动画类型可以是值动画valueanimator类型;其中,在构建好第一动画后,可以调用执行周期设置函数设置第一动画的执行周期;其中,可以调用动画开启方法开启第一动画,从而保证第一动画开始执行。且在第一动画的执行过程中,可以实现上述目标值改变后,android动画的执行方法。其中,第一动画的构建方法、执行周期设置方法、开启方法等使用到的函数或方法皆可参照上述第二动画实现同样功能的函数或方法,即在第一动画和第二动画皆可使用思路相同的方法以实现相同目的的操作。

本实施例提供的android动画执行方法,在第一动画执行过程中,当接收到服务器下发的目标值更改消息后,立即根据下发的目标值更改消息进行了第二动画的构建,从而减少了第二动画执行周期时长;设置第二动画的开启值,并于第一动画的执行动画值为第二动画的开启值时开启第二动画,而并非在第一动画执行结束后开启第二动画,从而使第一动画与第二动画衔接更加流畅,实现了在动画执行过程中动态改变动画目标值,使动画执行更加流畅,提升了用户体验。

实施例二

图2是本发明实施例二提供的一种android动画执行装置结构示意图,本实施例可适用于第一动画执行过程中动态改变目标值的情况。

参见图2,本实施例中android动画执行装置,应用于第一动画执行过程中,包括:

数值定义模块210,用于接收目标值更改消息,根据目标值更改消息定义第二动画的结束值,根据第一动画的结束值定义第二动画的起始值,并根据第二动画的起始值设置第二动画的开启值,其中,第二动画的开启值小于第二动画的起始值;

第二动画构建模块220,用于调用动画构建方法,根据第二动画的起始值以及第二动画的结束值构建第二动画;

第二动画开启模块230,用于调用第一动画监听函数确定第一动画的执行动画值,并于执行动画值等于第二动画的开启值时,调用动画开启方法开启第二动画。

可选的,数值定义模块210,包括:

结束值定义子模块,用于根据目标更改消息确定改变后的目标值,调用数值定义方法定义第二动画的结束值等于改变后的目标值;

起始值定义子模块,用于将预定义的第一动画的结束值减去预设值,调用数值定义方法定义第二动画的起始值等于第一动画的结束值减去预设值后的数值。

可选的,数值定义模块210,还包括:

开启值设置子模块,用于将第二动画的起始值减去第二动画的开启耗时值,并将第二动画的起始值与第二动画的开启耗时值的差值设置为第二动画的开启值。

可选的,第二动画开启模块230,具体用于:

在第一动画执行过程中,调用预添加的第一动画监听函数中的回调监听方法,确定第一动画的执行动画值。

可选的,回调监听方法包含有预设值动画类型的入参参数animation;相应的,第二动画开启模块230,具体用于:

调用预添加的第一动画监听函数中的回调监听方法中的getanimatedvalue()方法获取入参参数animation的当前属性值,将当前属性值确定为第一动画的执行动画值。

可选的,android动画执行装置,还包括:

控件信息更新模块,用于在第二动画开启模块230调用第一动画监听函数确定第一动画的执行动画值之后,根据第一动画的执行动画值更新控件信息。

可选的,android动画执行装置,还包括:

第一动画构建模块,用于定义值动画类型,并调用动画构建方法,根据预定义的第一动画的起始值以及第一动画的结束值构建值动画类型的第一动画;第一动画开启模块,用于调用动画开启方法开启第一动画。

本实施例提供的android动画执行装置,与实施例一提出的android动画执行方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例三

本实施例提供了一种终端,可以用于第一动画执行过程中动态改变目标值的情况。图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:

一个或多个处理器310;

存储器320,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器310执行,使得所述一个或多个处理器310实现如实施例一提出的android动画执行方法。

图3中以一个处理器310为例;处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。

存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的android动画执行方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的android动画执行方法。

存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与实施例一提出的android动画执行方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例四

本实施例提供一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一提出的android动画执行方法。

本实施例提出的可读介质与实施例一提出的android动画执行方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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