Android属性动画
从http://www.android-doc.com/guide/topics/graphics/prop-animation.html翻译所得
PropertyAnimation是一套可靠的动画框架,使用它几乎可以显示关于某个对象任何属性方面的动画,而不管这个属性的变化是否会反应到屏幕上。
PropertyAnimation主要设置的参数有:
- 动画持续时间,默认300ms
- 基于时间的差值算法:这是动画的关键。插值是以时间为轴来计算你要展示的属性变化的。比如你要使一个按钮从位置0移动到位置100,且每10ms刷新一次,显示时间为0.5s,那么整个动画就需要50帧,每一帧的位置变动量为(100 - 0)/ 50 = 2.当然,这是匀速插值动画,也可以指定其他差值算法,比如先加速后减速,那么刚开始的那几帧可能就没有对应的匀速差值帧的变动量多。
- 重复次数以及显示行为
- 动画集合,比如某个动画集合的所有动画一起显示
- 帧刷新频率,默认10ms
PropertyAnimation和ViewAnimation区别:
ViewAnimation只能显示View对象,要显示非View对象则需要自己写代码实现。而且ViewAnimation只能针对View的比例、位姿等方面的动画显示,而对于比如背景颜色等则无能为力;
ViewAnimation另一个不足的地方在于:它仅仅是改变了View对象的显示位置,而不是改变了该View真实的情况。比如你可以利用ViewAnimation使用一个Button从屏幕左边移动到右边,但却只有在Button真正定义的位置,比如屏幕左边,才会产生点击效果,而不是当Button显示在哪里,就在哪里可以响应点击事件。
PropertyAnimation就没有这些限制,它可以显示View和非View对象,而且是actual的改变该对象。从系统层面上来说,PropertyAnimation比ViewAnimation更加可靠。也可以基于更多的方面来产生动画,比如颜色,差值,而不是仅仅是位置,甚至可以同步多个动画。
但是ViewAnimation比PropertyAnimation安装(setup,可以理解为启动/准备时间)耗时更少,且需要编写的代码更少。如果ViewAnimation可以满足你的需求,则可以使用ViewAnimation。当然,同时使用两套动画系统也是可以的。