Android系统中的动画主要可分为三类
1.帧动画 (传送门)
2.补间动画(传送门)
3.属性动画(传送门)
注:下图来源其他博主,仅此一张
属性动画和补间动画的区别
1. 作用对象局限:View
补间动画: 只能够作用在视图View
上,即只可以对一个Button
、TextView
、甚至是LinearLayout
、或者其它继承自View
的组件进行动画操作,但无法对非View
的对象进行动画操作、
属性动画: 不再局限于 视图View对象
2. 没有改变View的属性,只是改变视觉效果
- 补间动画只是改变了
View
的视觉效果,而不会真正去改变View
的属性。 - 如,将屏幕左上角的按钮 通过补间动画 移动到屏幕的右下角
- 点击当前按钮位置(屏幕右下角)是没有效果的,因为实际上按钮还是停留在屏幕左上角,补间动画只是将这个按钮绘制到屏幕右下角,改变了视觉效果而已。
属性动画:改变了位置
3. 动画效果单一
- 补间动画只能实现平移、旋转、缩放 & 透明度这些简单的动画需求
- 一旦遇到相对复杂的动画效果,即超出了上述4种动画效果,那么补间动画则无法实现。
属性动画的原理:
- 在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果
- 可以是任意对象的任意属性
- 从工作原理可以看出属性动画有两个非常重要的类:
ValueAnimator
类 &ObjectAnimator
类
实际开发中,建议使用Java代码实现属性动画:因为很多时候属性的起始值是无法提前确定的(无法使用XML设置),这就需要在Java
代码里动态获取。