Android视图动画--插值器

  • 动画速率的控制: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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjxbless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值