当前位置:首页 > 编程笔记 > 正文
已解决

Android 属性动画ValueAnimator整理

来自网友在路上 162862提问 提问时间:2023-10-09 14:03:10阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

Android 属性动画有 ObjectAnimatorAnimatorSetValueAnimator 等。

ObjectAnimator 、AnimatorSet 参考前篇 Andorid 属性动画ObjectAnimation整理_南国樗里疾的博客-CSDN博客

本篇介绍 ValueAnimator ,它本身不作用于任何对象,它是对值进行动画,我们监听这个动画的过程,在这个过程中修改对象的值,从而实现对对象的动画效果。

使用方法,

ValueAnimator animator = ValueAnimator.ofFloat(0,100f);// 1
animator.setInterpolator(new AccelerateInterpolator());// 2
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {// 3@Overridepublic void onAnimationUpdate(ValueAnimator animation) {}
});
animator.setDuration(3500).start();//4
  • 注释1处:创建一个 ValueAnimator ,让他从 0 到 100f 做动画。
  • 注释2处:设置动画插值器。
  • 注释3处:设置动画监听器,在这里监听动画过程。
  • 注释4处:设置动画时长,开始动画。

直接运行时没有效果的,要看效果就在 onAnimationUpdate 中实现,
本例实现的例子,模仿银行app ,余额滚动效果。

float text = 10800 ;ValueAnimator animator = ValueAnimator.ofFloat(0,100f);//1
animator.setInterpolator(new AccelerateInterpolator());//2
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {//3@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float fraction = (float) animation.getAnimatedFraction();// 0~1float curValue = (float) animation.getAnimatedValue();float cur = text * fraction ;DecimalFormat df = new DecimalFormat("0.##");String str = df.format(cur);mTextView.setText(str);}
});
animator.setDuration(3500).start();//4

相关说明:

  • animation.getAnimatedFraction() :获取动画进度,浮点型,开始是 0 ,随着动画过程逐渐增加,动画结束时是 1 。
  • animation.getAnimatedValue() :获取当前进度值,注释1处我们传入的是 (0,100f) ,所以开始是 0 ,随着动画过程逐渐增加,动画结束时是 100.0 。
  • 按照动画进度计算出对应的余额,float cur = text * fraction ,格式化输出。

效果,
在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Android 属性动画ValueAnimator整理":http://eshow365.cn/6-17831-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!