Android视图动画--插值器

    xiaoxiao2022-07-07  151

    动画速率的控制:Interpolator(指定动画变化的量)

    使用插值器:

    在xml文件中引用插值器通过setInterpolator()函数设置插值器

    AccelerateDecelerateInterpolator是加速减速插值器,表示在开始与结束的地方速率改变比较慢,在中间的时候加速,先加速后减速

    TranslateAnimation translateAnimationInter = (TranslateAnimation) AnimationUtils.loadAnimation(ScaleActivity.this, R.anim.translateinter); //先快后慢 translateAnimationInter.setInterpolator(new AccelerateDecelerateInterpolator()); textView.startAnimation(translateAnimationInter); AccelerateInterpolator是加速插值器,在动画开始的地方速率改变比较慢,然后开始加速,然后突然停止 //加速突然停止 translateAnimationInter.setInterpolator(new AccelerateInterpolator()); textView.startAnimation(translateAnimationInter); DecelerateInterpolator是减速插值器,载动画开始的时候加速到最大值,之后减速 //减速插值器 translateAnimationInter.setInterpolator(new DecelerateInterpolator()); textView.startAnimation(translateAnimationInter); LinearInterpolator是匀速插值器,也称匀速加速器 匀速插值器translateAnimationInter.setInterpolator(new LinearInterpolator()); textView.startAnimation(translateAnimationInter); BounceInterpolator是弹跳插值器,模拟了控件自由落地后回弹效果 //弹跳插值器 translateAnimationInter.setInterpolator(new BounceInterpolator()); textView.startAnimation(translateAnimationInter); AnticipateInterpolator是初始偏移插值器,表示在开始的时候向反方向进行动画一部分之后,在反回来 除了普通的构造函数,还有一个参数为张力的构造函数public AnticipateInterpolator(float tension),张力值默认为2,越大初始的偏移量就越大,而且速度越快 //反向初始插值器 translateAnimationInter.setInterpolator(new AnticipateInterpolator(4)); textView.startAnimation(translateAnimationInter); OvershootInterpolator是结束偏移插值器,表示载动画结束时,沿着动画方向继续运动一段距离后再结束动画 同理它也有和上述反向插值器类似的构造函数 //前向结束插值器 translateAnimationInter.setInterpolator(new OvershootInterpolator()); textView.startAnimation(translateAnimationInter); 有了上述两个的插值器的铺垫,如果有一个两者兼具的是不是更好: AnticipateOvershootInterpolator就是这个插值器,开始向反方向一段距离,结束向后一段距离 除了上面类似的构造函数外还有一个public AnticipateOversshootInterpolator(flaot tension, float extraTension),最后一个参数就是额外张力值,默认为1.5 //上述两者结合 translateAnimationInter.setInterpolator(new AnticipateOvershootInterpolator(2,2)); textView.startAnimation(translateAnimationInter); CycleInterpolator是循环插值器,表示动画循环播放特定的次数,速率沿着正弦曲线改变,循环过后动画最终会回到初始位置(即使设置fillAfter=“true"也不会影响),中间的动画进度会按照正弦曲线变化 //循环插值器 translateAnimationInter.setInterpolator(new CycleInterpolator(1)); textView.startAnimation(translateAnimationInter);
    最新回复(0)