动画,在Android中分几种类型:逐帧(frame)动画、补间(tween)动画、属性动画。
其实frame和tween先出现,之后在3.0的时候属性动画才出现。导致它出现的原因是view动画存在一个比较大的缺陷,就是虽然图片在发生view动画后,其响应事件的位置依旧在动画进行前的位置。所以Android的view动画仅能做普通的动画效果。
frame
frame类似放电影一样,一张一张的来。
它可以从两种方式实现:xml文件、java代码
xml文件就是在定义<animation-list.../>元素中使用<item.../>子元素定义动画的所有图片。
注:android:onshot控制动画是否循环播放。
java代码中创建AnimationDrawable对象,然后调用addFrame方法向动画中添加帧;之后调用start方法和stop方法。
所以也就是每调用一次addFrame方法,就好似向<animation-list.../>元素中添加一个<item.../>子元素。
tween
tween就是在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。
当然它也可以在xml文件和java代码中实现动画,如下图所示:
这些都是一个大概,具体可参考这篇博文:Android应用开发之所有动画使用详解。
属性动画
属性动画,你可以认为是对tween的强化版。
它们之间的区别体现在下面的两个方面:
tween只能定义两个关键帧在那四个方面的变化,而属性动画却可以定义任何属性的变化。
tween只能对UI组件执行动画,但是属性动画几乎对任何对象执行动画。
和tween类似,属性动画也需要定义以下几方面的属性。
这些就是Android的动画了,当然这仅仅是一个了解而已。如果想手动的话,你可以到下面这些博文进行学习:
Android 属性动画:这是一篇很详细的 属性动画 总结&攻略
参考资料:
疯狂Android讲义 第七章 图形与图像处理
Android开发艺术探索 第7章 Android动画深入分析