在前面讲了基础动画的ViewAnimation的所有动画实现形式,xml和java代码实现。不过谷歌还提供了一个不错的效果,那就是插值器。不同的插值器对展现的动画效果有较大的影响。
参考启航的插值器介绍学习:http://blog.youkuaiyun.com/harvic880925/article/details/40049763
参考谷歌官网文档学习 :https://developer.android.com/guide/topics/resources/animation-resource.html
上一篇文章基础动画(ViewAnimation): http://blog.youkuaiyun.com/sw5131899/article/details/70162113
设置interpolator,也就是让动画按照设定的模式去运行。Interpolator原有的属性:
class就是java对应的类,Resource ID 是在XML中使用的。interpolator 属性属于Animation基础类,所以Scale,Translate,Rotate,alpha都可以设置自己的interpolator属性。意义如下(摘抄自启航的文章):
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
下面看看各个标签在应用上面的每个插值器后会运动轨迹会怎样。
那么久看看各个插值器的动画效果。
- AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
2.DecelerateInterpolator 在动画开始的地方快然后慢
3.AnticipateInterpolator 开始的时候向后然后向前甩
4.AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
5.AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
6.BounceInterpolator 动画结束的时候弹起
7.CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
8.LinearInterpolator 以常量速率改变
9.OvershootInterpolator 向前甩一定值后再回到原来位置
谷歌提供的API中interpolator就这么多,基本动画效果也给上了。怎么使用的话很简单。xml直接设置interpolator的属性,而java类Animation直接设置setInterpolator(插值器对象)就OK了。
xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0"
android:fromYDelta="100%"
android:toYDelta="-200%"
android:duration="3000"
>
</translate>
</set>
而java代码中:
animation.setInterpolator(new AccelerateInterpolator());
这样就搞定了,是不是很简单。