一种基于Android系统的GO图像动画引擎的制作方法

文档序号:6436044阅读:230来源:国知局
专利名称:一种基于Android系统的GO图像动画引擎的制作方法
技术领域
本发明涉及一种基于Android系统的图像动画引擎,具体的说,是一种适用于Android系统上显示各类动画、图形效果的绘图装置和方法。
背景技术
Android系统是一种基于Linux开放性内核的操作系统,仅上市两年便语句全球最受欢迎的智能设备的操作平台。目前在Android平台上对图像或者动画的显示都是基于Android平台自带的UI引擎显示,但Android系统自带的UI引擎由于过度封装,其动画和视图是一一对应的,在视图较多的情况下,动画占用的内存开销和引擎驱动计算的开销增大,降低了显示图像或者动画的速度。并且,系统自带的UI引擎只能够显示简单的、单位时间内同时运行数量少的二维动画,并且其自带的UI引擎的组件比较复杂,加大了开发人员自定义组件的难度。

发明内容
针对现有技术的不足,本发明的目的是要提供一种基于Android系统上工作更有效、使用更流畅的显示图像动画的GO图像动画引擎。本发明的另外一个目的是要提供一种基于GO图像动画引擎的实现图像动画的方法。为实现上述目的,本发明的采用的技术方案如下一种基于Android系统的GO图像动画引擎,所述GO图像动画引擎包括一组件树和一遍历器,所述组件树包含至少一组件,所述组件包括一公共数据区,用于存放该组件的公共数据;和一数据接口,提供方法供Android系统和/或该组件的父组件修改所述公共数据区中的公共数据;以及一图形绘制接口,根据遍历器访问,Android系统根据公共数据区的公共数据在一绘图线程中实现组件的绘制。进一步,所述组件还包括一动画接口,所述动画接口定期在一动画线程中被所述遍历器访问,组件根据遍历器对所述动画接口的访问计算并更新所述公共数据区的公共数据。进一步,所述组件树的根结点的组件为一继承Android系统视图的UI视图。进一步,所述GO图像动画引擎还包括一图像工具库,所述图像工具库包括一 M图像和图像特效类。为了实现本发明的另外一个目的,本发明采用的技术方案如下一种GO图像动画引擎显示图像动画的实现方法,包括以下步骤a、初始化GO图像动画引擎,并启动动画线程;
b、组件根据遍历器在动画线程中定时对动画接口的访问判断是否需要更新公共数据区中的公共数据,如果是,则更新数据并在遍历器上做出数据更新标记;C、遍历器完成对组件树中所有组件的动画接口的遍历后,检测是否存在所述数据更新标记,如果有,则由组件树的根结点的组件要求Android系统从新绘制图形。cUAndroid系统在一绘图线程中通过遍历器依次访问组件树中组件的图形绘制接口重新绘制组件。进一步,所述初始化GO图像动画引擎包括配置GO图像动画引擎的遍历器在动画线程中访问组件树的周期;加入需要被访问组件树的根结点;向跟结点中添加需要被显示的UI组件。进一步,在一个访问周期内,如果遍历器已经完成组件树中所有组件的动画接口的访问,则动画线程会进入休眠状态。进一步,所述动画线程从休眠状态恢复后,如果检测到停止信号,则进入停止状态,从而使遍历器停滞访问所有组件的动画接口。相对于现有技术,本发明所述的技术方案能够非常流畅的同时运行大量各类复杂的图像或者动画,并且运行速度快,显示更为流畅;其次基于GO图像动画引擎的组件简单、方便,开发人员可以快速开发定义自己需要的任何组件,减少开发周期;最后,本技术方案还可以使用图像工具包,开发人员不需要掌握及使用Android系统提供的繁琐的画布坐标变换以及画笔设置操作,就能以简单直观的方式就可以达到期望的效果。为了充分地了解本发明的目的、特征和效果,以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明。


图1是本发明所述GO图像动画引擎的结构示意图;图2是图1中组件的结构示意图;图3是本发明所述GO图像动画引擎的工作方法流程图;图4是本发明所述GO图像动画引擎的实现动画的流程图;图5是图3中初始化的流程图;图6是图像工具包的工作流程示意图。图中1-组件树;11-组件;111-数据接口 ;112-图形绘制接口 ;113-公共数据区;114-动画接口 ;2-遍历器。
具体实施例方式如图1至图2所示,一种基于Android系统的GO图像动画引擎,包括一组件树1和遍历组件树1的遍历器2。遍历器2遍历组件树1中每一个组件11,来完成组件11的数据更新和绘制图形。请参阅图1,组件树1由显示在视图上的各种组件11组成,组件11承托着显示到屏幕上的绘图组件,如屏幕上显示的按钮、文本等。这些组件11在组件树1中如树状结构分布,一个组件11也可以包含着其他子组件。本实施例中,该组件树1的根结点为一继承于Android系统视图类的UI视图,并将该UI视图作为组件树的根结点实现与遍历器2的接口。在具体的应用当中,开发者根据不同的需要向根结点如UI视图添加各种需要被显示的UI组件,以满足UI设计要求。请参阅图2,组件树1中包含至少一个组件11,所述组件11包括数据接口 111和图形绘制接口 112以及存放该组件11的公共数据的公共数据区113,公共数据区113存放组件11的公共数据,如组件的坐标、组件的长和宽等数据;组件11的数据接口 111用于提供方法给外部如Android系统或者该组件的父组件修改组件11的公共数据区113中存放的公共数据,Android系统根据遍历器2对图形绘制接口 112的访问,调用公共数据在一图形绘制线程对组件11进行绘制。组件11中还可包含一动画接口 114,动画接口 114在一动画线程中被遍历器2访问。组件11根据遍历器2的对动画接口 114的访问来计算和更新组件11公共数据区114中存放的公共数据。GO图像动画引擎还包括一图像工具包,图像工具包包括一 M图像和图像特效类,M图像封装了 Android系统提供的繁琐的画布坐标变换操作以及画笔设置操作,封装了引擎要显示的图片,并对外提供接口供所述图像特效类调用。M图像可以根据图片的旋转、缩放大小等属性,调用画布的矩阵变换方法及配置,最后调用画布绘制原始位图的方法,从而产生位图的旋转、缩放等效果。开发人员可以通过其简单而直观的调用接口来绘制图片,M图像的接口主要包括图片锚点位置的X坐标值和Y坐标值;图片水平方向和垂直方向是否镜像翻转的布尔值;图片的缩放宽度和高度;图片旋转的角度;图片最大尺寸的大小,即图片包围盒的大小;图片的透明度;图片的掩码颜色以及图片抗锯齿效果质量。可以通过获取该组件的各个属性来设置标记,通过对标记的操作来设置和/或更改图像实例的属性。MImage被创建后,可以记录传入参数给各个属性设置默认值。在操作MImage的时候,可以获取以及设置各个属性,如果有属性被更改,则设置对应的标记。对于不同的属性,可以提供不同的设置方法,例如,设置锚点可以用组合枚举值(上、下、垂直居中、左、右)作为传入参数;设置图片的大小,可以用缩放比例作为传入参数进行不等比例的缩放。以下结合附图6详细描述M图像的工作过程。请参阅图6,Android系统根据标准格式的位图创建MImage对象(即图片)后,将图片封装在M图像之中,并对外提供接口供外部调用。遍历器2遍历该组件11的数据更新接口,MImage对象更新自身的数据设置对象的锚点位置(默认是屏幕的左上角)、设置对象在水平方向和/或垂直方向是否需要镜像翻转、设置图片是否需要在水平和/或垂直方向缩放以及缩放的比例、设置图片的旋转角度(默认为0)、设置图片的不透明度(默认为100%)、设置包围盒的大小(默认为无)、完成更新这些数据后,如果这些设置有改变,则给遍历器2发出“重新绘制图形”的信号,遍历器2将组件的“重新绘制图形”的标记标志后,组件就可以实现绘制图形。M图像组件调用Android系统方法绘制图形,其中锚点在屏幕上的对应位置作为参数传入。根据上述的设置,计算平移、旋转、缩放的组合变换矩阵。如果上述设置中设置了包围盒,则用矩阵对图片中四个顶点进行变换,去变换后的点的包围盒来计算和指定包围盒的大小和比例,对矩阵做一个缩放变换,如果没有指定包围盒,则设置画刷的不透明度、电泳系统绘制位图的方法,将变换后的矩阵和画刷作为参数传入。完成这些操作后,M图像判断是否需要改变绘制,如果不需要,则结束;如果需要,则返回绘制图像后返回上述步骤更新设置。图像工具包的图像特效类封装了对图像进行特效处理,如模糊、渐变或边缘发光等图像处理算法,在内部实现对图像的每个像素进行计算的功能。对其输入原始的bitmap 位图对象,输出就是经过处理的bitmap位图对象。为了提高效率,通过Android的NDK原生开发工具包采用C/C++语言进行编程开发。组件在调用图像工具包对图像进行处理时, 组件以组件中的bitmap对象、资源ID、文件路径、输入流等作为参数,并通过M图像的接口调用其方法对图片进行处理;如果需要对图片进行特效处理,则一图片作为参数调用图像工具包中的图像特效类,接收其返回的新的图片就可以得到图片的特效效果。以下结合附图3至附图5详细描述该基于Android系统的GO图像动画引擎的工作过程。请参阅图3,图3为本GO图像动画引擎的工作流程图,GO图像动画引擎进入步骤 S301开始后,进入步骤S302。步骤S302 初始化GO图像动画引擎,并启动动画线程。请参阅图5,创建UI引擎后,准备初始化引擎。初始化在步骤S501开始后,步骤如下S502 首先为图像动画引擎配置刷新周期时间的参数,该刷新周期时间即为UI引擎进入一段时间休眠后,重新刷新UI组件的时间间隔。 S503 创建一个继承了 Android系统的视图的UI视图,并且将该UI视图作为引擎的根结点和实现引擎的接口,加入引擎遍历的列队中,这样引擎就可以不停的更新UI组件 11。S504 根据不同的设计要求,开发者可以向跟结点中添加各种需要被显示的UI组件11,如按钮、文本框等组件,以此满足UI的设计要求。到此,引擎初始化完成,进入步骤 S505结束初始化。步骤S303 检查需要被刷新的组件11。引擎完成初始化后,遍历器2就会开始查看组件树1中有没有组件11,如果有就会一个一个遍历所有的组件11,如果没有则直接结
束O步骤S304 更新组件数据。由于每一个组件都存在自己特定的属性,如文字的大小、颜色属性等,这些属性就构成了组件内部的数据。遍历器2检查到需要刷新的组件11 后,遍历器2遍历组件树1根结点下的每一个组件,调用每一个组件11预先设计好的动画接口 114。步骤S305 组件11根据遍历器2对动画接口 114的访问判断是否需要更新数据, 如果需要,则进入步骤S306,否则进入步骤S307.步骤S306 组件11根据自身情况更新数据公共数据区114中存放的公共数据,并在遍历器2上做出相应的数据更新标记。步骤S307 检测组件11的子组件。由于组件11在组件树1中呈树状结构分布, 因此一个组件下面还可以包含若干子组件。遍历器2完成组件11更新后,还需要根据检测该组件11是否存在子组件,如果检测到子组件,则返回步骤S304更新子组件的数据,否则进入步骤S308。步骤S308 在遍历器2完成对组件树1中所有组件11的动画接口 114的遍历后, 检测是否存在数据更新标记,如果检测到存在数据更新标记,则进入步骤S309,否则进入步骤 S3310。步骤S309 由组件树1的根结点的组件即UI视图组件要求Android系统重新绘制图形。步骤S310 在一个访问周期内,如果遍历器2完成遍历组件树1中的所有组件的时间是在一个规定的周期内,则动画线程进入休眠状态直到下一个周期的到来。步骤S311 动画线程检测在下一个访问周期到来后,检测是否存在停止遍历的信号,如果检测到停止信号则进入步骤S312,停止动画线程,否则重新从步骤S303开始完成下一次遍历。值得注意的是,遍历器2对动画接口 114的访问以及组件11计算和更新数据均在动画线程中完成的。请参阅图4,Android系统收到根结点绘制图形的要求后,在一图形绘制线程中根据遍历器2对组件树1中组件11的图形绘制接口 112的访问,根据公共数据区114中存放的公共数据重新绘制图形,从而完成动画的实现。以上详细描述的GO图像动画引擎的工作过程,本引擎不需要将动画与视图进行一一对应,在视图较多的时候能有效的降低内存开销和引擎驱动计算。例如本GO图像动画引擎能够在视图容器(XPanel)的animate方法中更新各子控件的属性来减少内存使用和函数调用。相对于现有技术,本发明所述的技术方案能够单位时间内同时应负大量各类复杂的二维和三维动画运行,由于动画坐标的计算与图形的绘制分别处于不同的线程之中,动画每帧运行速度可以更快、更好地使动画能非常流畅的速度展现UI界面上,带来更好的动画效果。其次,该方法采用的组件简单,开发人员可以快速的开发组件,降低了开发人员组件的开发难度,最后,该GO图像动画引擎还支持图像模糊、渐变等效果,展示图像的效果更丰_ ο以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明构思在现有技术基础上通过逻辑分析、推理或者根据有限的实验可以得到的技术方案,均应该在由本权利要求书所确定的保护范围之中。
权利要求
1.一种基于Android系统的GO图像动画引擎,其特征在于,所述GO图像动画引擎包括一组件树和一遍历器,所述组件树包含至少一组件,所述组件包括一公共数据区,用于存放该组件的公共数据;和一数据接口,提供方法供Android系统和/或该组件的父组件修改所述公共数据区中的公共数据;以及一图形绘制接口,通过遍历器的访问,Android系统根据公共数据区的公共数据在一绘图线程中实现组件的绘制。
2.如权利要求1所述的图像动画引擎,其特征在于,所述组件还包括一动画接口,所述动画接口定期在一动画线程中被所述遍历器访问,组件根据遍历器对所述动画接口的访问计算并更新所述公共数据区的公共数据。
3.如权利要求2所述的图像动画引擎,其特征在于,所述组件树的根结点的组件为一继承Android系统视图的UI视图。
4.如权利要求1至3任一项所述的图像动画引擎,其特征在于,所述GO图像动画引擎还包括一图像工具库,所述图像工具库包括一 M图像和图像特效类。
5.一种GO图像动画引擎显示图像动画的实现方法,其特征在于,包括以下步骤a、初始化GO图像动画引擎,并启动动画线程;b、组件根据遍历器在动画线程中定时对动画接口的访问判断是否需要更新公共数据区中的公共数据,如果是,则更新数据并在遍历器上做一数据更新标记;C、遍历器完成对组件树中所有组件的动画接口的遍历后,如果检测存在所述数据更新标记,则由组件树的根结点的组件要求Android系统从新绘制图形;cUAndroid系统在一图形绘制线程中根据遍历器组件树中组件的图形绘制接口的访问重新绘制组件。
6.如权利要求5所述的实现方法,其特征在于,所述初始化GO图像动画引擎包括配置GO图像动画引擎的遍历器在动画线程中访问组件树的周期;加入需要被访问组件树的根结点;向跟结点中添加需要被显示的UI组件。
7.如权利要求6所述的实现方法,其特征在于,在一个访问周期内,如果遍历器已经完成组件树中所有组件的动画接口的访问,则动画线程会进入休眠状态。
8.如权利要求7所述的实现方法,其特征在于,所述动画线程从休眠状态恢复后,如果检测到停止信号,则进入停止状态,从而使遍历器停滞访问所有组件的动画接口。
全文摘要
本发明公开了一种基于Android系统的GO图像动画引擎,属于一种适用于Android系统上显示各种动画、图形的绘制装置和方法,包括一组件树和一遍历器,通过遍历器对组件树的遍历更新组件的数据和绘制图形。本发明所述的技术方案能够更快、更好的将动画和图形以非常流畅的速度展现在UI界面上,带来更好的动画效果。
文档编号G06F9/44GK102385515SQ20111032230
公开日2012年3月21日 申请日期2011年10月21日 优先权日2011年10月21日
发明者梁国盛 申请人:广州市久邦数码科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1