Android动画4-Interpolator常用模式

原创 2016年05月31日 13:16:54
插值器通过 对动画执行的每个时间点进行 提前/延迟 来达到对动画效果的 加速/减速,通过设置不同的 曲线 来得出负时间/大于1的时间值,使控件按设定的动画轨迹 反方向/正方向 超出改变一点轨迹
     这里只介绍 官方提供的9中插值器,即已有的Interpolator的9个子类。当使用插值器的时候只要创建这几个类的对象,然后调用anim.setInterpolator方法就已经把该插值器添加到动画里了。
     9个子类:   AccelerateDecelerateInterpolator  加速减速插值器-开始与结束时速度慢,中间速度快
                        AccelerateInterpolator  加速插值器-开始速度慢,然后一直变快
                        DecelerateInterpolator 减速插值器-开始速度快,然后一直变慢
                        AnticipateInterpolator  向前插值器-先向反方向运动一定距离,然后正方向运动到终点
                        AnticipateOvershootInterpolator  向前向后插值器-先反方向运动一定距离,然后正方向运动到超出一定距离,然后返回终点
                        OvershootInterpolator 向后插值器-到轨迹终点之后再正方向运动一定距离,然后返回终点
                        BounceInterpolator  反弹插值器-类似于一物体从高度掉到地上,会弹起来几下
                        CycleInterpolator   循环插值器-类型于正弦曲线那样来回运动
                        LinearInterpolator  线性插值器-正常速度,默认就是
        详细说明:  (注:所有插值器是对时间进行处理,动画的移动轨迹是没有变化的)
            上面已经说了插值器其实是通过对 绘制时间 进行修改(提前/延迟)来达到速度变化的效果(其实是错觉,速度没有变化,只是时间变了),在各个插值器类里面都会有一个方法,输入正常时间输出计算过后的时间。
            例如:加速插值器
            ,这个方法会对输入的时间进行处理,这个方法结果是input的平方(当创建该插值器时传入的参数是1的时候,走if为true),即本来总时间的0.1位置该绘制的图像变成了0.01时要绘制的图像,0.9位置应绘制的图像变成了0.81位置绘制的图像,以此类推。这样就会看到速度“越来越快”。
            故以下曲线Y轴代表输出时间,X轴代表输入时间, 只需要关注 X轴 [0,1] 的这一段,曲线图转自http://blog.csdn.net/wzg_1987/article/details/8989686
            1. AccelerateDecelerateInterpolator  先加速后减速
            
                        类似  正弦曲线 -π/2 到 π/2 段。
                        构造方法:无参构造,计算时间的方法:
            2. AccelerateInterpolator     一直加速
            
                        类似 正弦曲线 -π/2 到 π/2 段。
                        构造方法:

                        传入一个float类型值,,由这两个方法可看出,传入的值越大,初始斜率就越小,即初始速度越小。
            3. DecelerateInterpolator    一直减速
            
            类似  正弦曲线 0 到 π/2 段。
            构造方法: 和加速插值器刚好相反
  
                     
            传入的值越大,初始速度越快。  还有个无参构造,无参构造代表mFactor=1f   
            4. AnticipateInterpolator    向前插补器
               
            这是一个3次的曲线,[0,1]中有一些点Y轴为负值,即代表先反方向运动
            构造方法:1.无参构造,代表 mTension=2f;    2.一个float类型的参数
,传入的值越大,刚开始反方向的距离越长,但是注意这里反方向运动距离是计算出来的,不是由传入值 直接指定的。
            5. AnticipateOvershootInterpolator 向前向后插值器
               
            [0, 0.5]向前插补,[0.5, 1]向后插补
            构造方法:
            
            
            
            计算时间的方法:
            
            反方向运动和正方向运动的距离是相同的。传入的值越大,反方向/正方向移动的距离越长。
            6. OvershootInterpolator 向后插值器
                
            [0,1]有一部分Y轴值超出1,这部分就是正向超出部分
            构造方法:
            
            
            计算时间的方法:
            
            传入的值越大,超出距离越长。
            7. BounceInterpolator  反弹插值器
            构造方法:无参构造
            计算时间的方法:
            
            8. CycleInterpolator   循环插值器
            构造方法:
            
            计算时间的方法:
            
            由源码可看出,此曲线就是正弦曲线,很明显传入的值控制着整个曲线的X轴长度,传入5代表曲线最大长度是10π。
            9. LinearInterpolator  线性插值器
            构造方法: 无参构造
            计算时间的方法:
            
            这就是 正常速度。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

几种常用的Interpolator(插值器)的动画效果

插值器用于动画, 在代码中:直接调用setInterpolator(new Interpolator); 在xml中: android:interpolator="@android:anim/acce...

Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

大家好,欢迎继续回到Android属性动画完全解析。在上一篇文章当中我们学习了属性动画的一些进阶技巧,包括ValueAnimator和ObjectAnimator的高级用法,那么除了这些之外,当然还有...

Android动画之Interpolator插入器

SDK对Interpolator的描述是:An interpolator defines the rate of change of an animation. This allows the bas...

Android 动画-Interpolator和TypeEvaluator

上篇已经简单介绍了Android的一些动画,当然也包括Property Animation动画,这次再来记录下Interpolator 和 TypeEvaluator。也是对属性动画的一个扩展。 ...

Android动画(一)Interpolator

目录[+] 一:简介 interpolator可以翻译成插值器。 Android中interpolator最底层的接口如下: ? 1 2 3 4 5 6 ...

Android 动画 Interpolator插值器

插值器 首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关键帧(首帧或尾帧),然后由系统自动生成中间帧,生成中间帧的这个过程可以成为“插值”。插值器定义了动画变化的速率,提供不同的函...

Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析。在上一...

Android动画-Interpolator(插值器)大全

本章内容 花了点时间,把所有动画的插值器都用了一遍,写了个Demo分享下,看效果之前先看下Android动画中插值器的类型: AccelerateDecelerateInterpolator ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)