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);
  • 相关阅读:
    内存问题定位与解决
    CPU问题定位与解决
    数据库优化案例——————某市中心医院HIS系统
    系统隐形杀手——阻塞与等待
    SQL Server常见问题介绍及快速解决建议
    CVTE实习感想--2014.10秋招
    Spring AOP的理解
    一些Java面试问题
    举几个大数据的例子
    Java中乐观锁与悲观锁的实现
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8405990.html
Copyright © 2011-2022 走看看