一种对多个视图执行不同属性动画的实现方法与流程

文档序号:13427476阅读:326来源:国知局

本发明涉及信息处理技术领域,具体而言涉及一种对多个视图执行不同属性动画的实现方法。



背景技术:

当前android(安卓)系统提供了3种动画类型:帧动画、补间动画和属性动画。开发者在对某个单独的视图(view)执行属性动画时很容易实现。但是,在实际开发过程中,往往同一个页面中会有多个view可能同时设置不同的属性,串行/并行执行多个不同的属性动画。在现有的方法中,虽然能够通过对每个view设置一个viewanimator,然后通过animatorset集合来统一对不同view的属性动画做串行/并行执行的管理,但是在程序代码的可读性以及扩展性上会增加不必要的开发负担,每个view都必须要有viewanimator,多个viewanimator包含的属性动画又需要通过animatorset来管理,这导致了代码量非常大,无法简易地实现多个view的属性动画,尤其是不同属性动画的实现。



技术实现要素:

本发明的目的在于提供一种对多个视图执行不同属性动画的开发方法和装置,以改善上述问题。

本发明第一实施例提供了一种对多个视图执行不同属性动画的实现方法,其包括:

采用链式操作方法为页面上需要执行属性动画的多个视图设置至少1个viewanimator,其中每个viewanimator都管理至少1个animatorbuilder,每个animatorbuilder都包含一个由1个或多个属性动画组成的动画集合和管理需要执行属性动画的至少1个视图;

当每个animatorbuilder开始被执行时所述animatorbuilder遍历其管理的所有视图,使得在该animatorbuilder管理的至少1个视图上执行该animatorbuilder包含的所述动画集合里的相应的1个或多个属性动画。

其中,当设置有多个viewanimator时,根据不同属性动画的执行需求采用链式操作方法设置所述多个viewanimator之间的串行和/或并行关系。

其中,根据设置的串行关系当所述多个viewanimator中的1个viewanimator所管理的animatorbuilder全部执行完毕时通过回调方法执行下1个viewanimator所管理的animatorbuilder;当需要执行的多个viewanimator被设置为并行关系时同时执行该多个viewanimator各自所管理的animatorbuilder。

其中,在所述viewanimator中使用andanimate()方法在需要执行属性动画的多个视图上并行执行属性动画,使用thenanimate()在需要执行属性动画的多个视图上串行执行属性动画。

其中,当所述动画集合包含的属性动画为多个时,该多个属性动画为不同属性的属性动画。

其中,每个animatorbuilder所包含的所述动画集合里的所有属性动画都由animatorset进行管理。

其中,该animatorbuilder遍历其管理的所有视图时采用循环遍历方式,即每当需要执行该animatorbuilder包含的所述动画集合里的1个属性动画时就遍历一次该animatorbuilder管理的所有视图,在需要执行该属性动画的至少1个视图上执行该属性动画。

其中,该animatorbuilder遍历其管理的所有视图时采用循环遍历方式,当需求设计是在1个或多个视图上需要同时执行多个属性动画时,每当需要同时执行该animatorbuilder包含的所述动画集合里的多个属性动画时就遍历一次该animatorbuilder管理的所有视图,在需要同时执行该多个属性动画的至少1个视图上同时执行该多个属性动画。

其中,当1个viewanimator管理有多个animatorbuilder时并行执行所管理的每个animatorbuilder。

本发明第二实施例提供了一种存储设备,其中存储有多条指令,所述指令适于由处理器加载并执行如第一实施例所述的方法或第一实施例及其优选实施例的组合所述的方法。

根据本发明的一种对多个视图执行不同属性动画的实现方法,采用链式构建程序代码的设计思路,让需要执行属性动画的多个视图view能够通过串行/并行执行方式在一条执行链路上完成,这使得多个视图view的属性动画执行变得简单,代码可读性强,代码简洁并且代码量小,大大降低了开发者开发动画的时间成本,提高了开发效率。

附图说明

图1是本发明实施例提供的对多个视图执行不同属性动画的开发方法的流程图。

具体实施方式

下面将结合本发明实施例和附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例提供的对多个视图执行不同属性动画的方法的流程图。如图1所示,本发明的对多个视图执行不同属性动画的方法包括:

s1:采用链式操作方法为页面上需要执行属性动画的多个视图设置至少1个viewanimator,其中每个viewanimator都管理至少1个animatorbuilder,每个animatorbuilder都包含一个由1个或多个属性动画组成的动画集合和管理需要执行属性动画的至少1个视图。

具体的,本发明涉及的实现方法是采用链式编程操作方式为页面上需要执行属性动画的多个视图设置至少1个viewanimator对象,当设置有多个viewanimator对象时,可以根据不同属性动画的执行需求采用链式操作方法设置所述多个viewanimator之间的串行和/或并行关系。在页面上需要执行属性动画的多个视图中,有的至少2个视图需要同时(并行)执行属性动画,有的视图需要按先后顺序(串行)执行属性动画,在所述viewanimator中使用andanimate()方法在需要执行属性动画的多个视图上并行执行属性动画,使用thenanimate()在需要执行属性动画的多个视图上串行执行属性动画。

在设置每个viewanimator时,需要每个viewanimator都管理至少1个animatorbuilder,所述animatorbuilder的作用就是用于构造基本的属性动画,可以为每一个不同的viewanimator构建不同的动画效果。所述每个animatorbuilder都包含一个由1个或多个属性动画组成的动画集合、和管理需要执行属性动画的至少1个视图(view)。在编程设计中,viewanimator作为一个工具类,其管理1个或多个animatorbuilder,而animatorbuilder可以管理1个或者多个应用上的至少1个视图(view),尤其是需要执行属性动画的至少1个视图。可通过参数传递设计方式使animatorbuilder管理需要执行属性动画的至少1个视图(view),例如:

举例:animatorbuilderandanimator(view1,view2,view3,view4),通过参数view1,view2,view3,view4的传递,由此可以读取相应的4个视图,当然也可以设计成读取更多或更少的视图。当所述动画集合包含的属性动画为多个时,该多个属性动画为不同属性的属性动画。另外,每个animatorbuilder所包含的所述动画集合里的所有属性动画都是由animatorset组件进行管理,使用animator组件来描述在视图上执行的属性动画。

s2:当每个animatorbuilder开始被执行时该animatorbuilder遍历其管理的所有视图,使得在该animatorbuilder管理的至少1个视图上执行该animatorbuilder包含的所述动画集合里的相应的1个或多个属性动画。

当程序运行到开始执行所设置的1个或多个viewanimator所管理的每个animatorbuilder时,被执行的animatorbuilder读取其包含的所述动画集合里的相应的1个或多个属性动画animator,遍历该animatorbuilder管理的所有视图并且在需要执行所读取的属性动画animator的视图上执行相应的属性动画animator。

其中,该animatorbuilder遍历其管理的所有视图时采用循环遍历方式,即每当需要执行该animatorbuilder包含的所述动画集合里的1个属性动画时就遍历一次该animatorbuilder管理的所有视图,在需要执行该属性动画的至少1个视图上执行该属性动画。再者,该animatorbuilder遍历其管理的所有视图时采用循环遍历方式,如果在需求设计中在1个或多个视图上同时执行多个属性动画时,也可以每当需要同时执行该animatorbuilder包含的所述动画集合里的多个属性动画时就遍历一次该animatorbuilder管理的所有视图,在需要同时执行该多个属性动画的至少1个视图上同时执行该多个属性动画。

另外,当1个viewanimator管理多个animatorbuilder时并行执行所管理的每个animatorbuilder。

在一个优选实施例中,在采用链式操作方法为页面上需要执行属性动画的多个视图设置有多个viewanimator对象时,在根据不同属性动画的执行需求采用链式操作方法设置所述多个viewanimator之间的串行和/或并行关系中,根据设置的串行关系当所述多个viewanimator中的1个viewanimator所管理的animatorbuilder全部执行完毕时通过回调方法执行下1个viewanimator所管理的animatorbuilder;当需要执行的多个viewanimator被设置为并行关系时同时执行该多个viewanimator各自所管理的animatorbuilder。

根据本发明的一种对多个视图执行不同属性动画的实现方法,采用链式构建程序代码的设计思路,让需要执行属性动画的多个视图view能够通过串行/并行执行方式在一条执行链路上完成,这使得多个视图view的属性动画执行变得简单,代码可读性强,代码简洁并且代码量小,大大降低了开发者开发动画的时间成本,提高了开发效率。

本发明实施例所提供的对多个视图执行不同属性动画的方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

为此,本发明还提供了一种存储设备,其中存储有多条指令,所述指令适于由处理器加载并执行如第一实施例所述的方法或该第一实施例与优选实施例组合所述的方法。

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

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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