Android 动画技术

关于android动画主要有三种:补间动画,逐帧动画和属性动画(android3.0以后引入)详细了解动画的基本知识,可详细阅读该博文http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html 。博文主要对android动画在项目中开发问题及解决办法列举如下:

    1、属性动画是在android3.0后引入的。据工作中项目经验,属性动画效率貌似高于补间动画和逐帧动画。建议使用属性动画在android3.0以上设备,属性动画基本可以实现补间动画和帧动画效果。同时当需要展示动画的view属性设置成gone状态时候,动画不会启动。

    2、关于帧动画启动不能在oncreate中启动,在oncreate中启动有可能view控件未显示加载出来从而动画效果没有作用,一般来说在onwindowfocuschanged方法中启动动画即可。

    3、关于在viewgroup中删除含有动画的view后,由于view动画尚未执行结束即使view已经删除但是在屏幕上仍残存,此时可以调用viewgroup中的方法clearDisappearingChildren 避免以上情况的发生。同时在安卓低版本中建议调用该方法后调用刷新方法。

    4、关于水平滚动的类listview可以采用android 最新推出的 RecylerVeiw来实现。


逐帧(Frame)动画

收集静态图片,控制依次显示,肉眼视觉停留。

AnimationDrawable 刷网页,动态加载,转圈等


补间(Tween)动画:

只需指定开始结束的关键帧,中间帧由系统计算。

Interpolator 透明度改变、大小缩放、位移变化,旋转动画等等。


属性动画:

增强版的补间动画,可定义任何属性的变化(不光透明度,大小,位移,旋转),对任何对象执行动画(不管是否系那是在屏幕上)。

很多API

Animator:创建属性动画基类,被继承重写;

ValueAnimator:主要的时间引擎,计算帧的属性值,核心功能。

小球掉落动画,监听用户在屏幕上的触屏时间。。。


SurfaceView实现动画:

View进行绘图存在缺陷:

1.View缺少双缓存机制,SurfaceView的双缓存避免了界面的闪烁。http://blog.csdn.net/qq942418300/article/details/7046686

2.当程序更新View图像时,程序必须重绘View上显示的整张图片,

3.新线程无法直接更新View组件。SurfaceView允许在非UI主线程中画图,即可自己起一个线程来画图,减少了UI线程被“卡”住的现象,提高了效率。


所以自定义View绘图,游戏中的绘图。Android提供了SurfaceView来代替View,游戏中更出色。



你可能感兴趣的:(android动画,SurfaceView,补间动画,逐帧动画,属性动画)