初识属性动画
在Android中动画包含两种基本动画:View (Tween)补间动画和Frame 动画;在3.0之后引入了属性动画(Property Animation);我们重点说一下属性动画。
动画区别
- View 动画的特性:
- 只能针对View进行 淡入淡出、旋转、移动、缩放操作;
- 动画结束之后,只是一种映射的移动,view本身还停留在原来的地方;
- 在进行动画和修改位置信息同时操作时,执行的顺序是:先移动到指定位置,再进行动画的显示。这是与我们设想的有出入;
- Perproty 动画的特性:
- 对任意对象的任意属性进行值的设定;
- 针对移动动画实现view的真实移动;
ValueAnimator
动画的核心类,原理:使用一种时间循环的机制来计算值与值之间的一种过渡;
|
|
为动画添加监听器,监测值的变化
|
|
在常用的方法中还有ofInt()和ofObject()方法等;还可以调用setStartDelay()方法来设备动画延迟播放的时间,setRepeatCount()和setRepeatMode()方法设置动画重复播放的次数以及循环播放的模式;
|
|
ObjectAnimator
继承自ValueAnimator,拥有ValueAnimator所有的属性和方法;对图片进行平滑的移动,
|
|
在 ofFloat 的第二个参数中,我们可以随意的添加类似:alpha、rotation、translationX、scaleY 等属性值,但view中并没有这些值,那么他们到底是怎么发生作用的呢?其实ObjectAnimator 的内部机制是去寻找相应的get()/set()方法来实现相应的操作;因此translationX 属性对应的 get() / set() 方法如下:
|
|
组合动画
AnimatorSet,
包含四个方法:
- after(Animator anim) — 将现有动画插入到传入的动画之后执行
- after(long delay) — 将现有的动画延迟指定多少毫秒之后执行
- before(Animator anim) — 将现有动画插入到传入的动画之前执行
- with(Animator anim) — 同时执行
|
|
Animator Listener
当页面有多个动画同时关联的时候,监听器的存在就发挥很大的作用啦;
|
|
如果我们只需要监听动画完成时的事件,那么我们只需要写AnimatorListenerAdapter()就可以啦;
|
|
关于属性动画的一些基本内容就先介绍到这里,后续在深入挖掘;