Android动画系列(二)

来源:互联网 发布:网络监控存储 编辑:程序博客网 时间:2024/05/17 04:25

在前面讲了基础动画的ViewAnimation的所有动画实现形式,xml和java代码实现。不过谷歌还提供了一个不错的效果,那就是插值器。不同的插值器对展现的动画效果有较大的影响。

  • 参考启航的插值器介绍学习:http://blog.csdn.net/harvic880925/article/details/40049763

  • 参考谷歌官网文档学习 :https://developer.android.com/guide/topics/resources/animation-resource.html

  • 上一篇文章基础动画(ViewAnimation): http://blog.csdn.net/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 向前甩一定值后再回到原来位置

下面看看各个标签在应用上面的每个插值器后会运动轨迹会怎样。
那么久看看各个插值器的动画效果。

  1. 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());

这样就搞定了,是不是很简单。

0 0
原创粉丝点击