zoukankan      html  css  js  c++  java
  • 动画插值器

    插值器:就是一个函数,将时间t经过一个函数的变换映射到t',从而影响动画的运动轨迹和速度变化

    Android系统提供的默认插值器:
    AccelerateDecelerateIntepolator
    动画开始与结束的地方速率改变比较慢,在中间的时候加速
    AccelerateInterpolator
    动画开始的地方速率改变比较慢,然后开始加速
    AnticipateIntepolator
    开始的时候向后然后向前甩
    AnticipateOvershootInterpolator
    开始的时候向后然后向前甩一定值后返回最后的值
    BounceInterpolator
    动画结束的时候弹起
    CycleInterpolator
    动画循环播放特定的次数,速率改变沿着正玄曲线
    DecelerateInterpolator
    在动画开始的地方快然后慢
    LinearInterpolator
    以常量速率改变
    OvershootInterpolator
    向前甩一定值再回到原来位置

    如何实现一个插值器

    public class EaseInOutCircInterpolator implements TimeInterpolator{
        @Override
        public float getInterpolation(float input){
             if((input*=2)<1.0f){
                   return (float)(0.5*(1-Math.sqrt(1-input*input)));
             }
             input -=2;
             return (float)(0.5*(Math.sqrt(1-input*input)+1));
        }
    }

    使用

    mAnimator = ValueAnimator.ofFloat(1.0f);
    mAnimator.setInterpolator(new EaseInOutCircInterpolator());
    mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
         @Override
         public void onAnimationUpdate(ValueAnimator animation){
                float timeFraction = animation.getCurrentPlayTime()/(float)animation.getDuration();
                float animFraction = ((Float)animation.getAnimatedValue()).floatValue();
                mPanelView.onAnimate(timeFraction,animFraction);
         }
    });
    mAnimator.setDuration(1000);
  • 相关阅读:
    Rman-10038: Database Session For Channel D1 Terminated Unexpectedly
    MySQL从入门到项目实践 pdf下载
    Oracle_优化器使用(oracle11g)
    当sqlserver启用sa账户时,出现Microsoft SQL Server 错误代号: 15535 解决方法 (转)
    sqlserver 如何分析“死锁调度程序”转储?
    AtCoder Beginner Contest 213
    LOJ
    [学习笔记] 计算几何
    [COCI 2009-2010 #6] XOR
    BZOJ
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8405990.html
Copyright © 2011-2022 走看看