如何将一个数字从一个值逐渐变化到另外一个值?
构造方法中要传入一个textview,可以将要操作的textview传进来,因为启动动画需要一个实例的view,这里并不会对该textview进行动画变化(移动,旋转等),只是利用他启动动画和改变textview中的数字。
interpolatedTime的值从0变化到1,持续时间由setDuration()方法设定,这里设置了20*2000毫秒,如果你的数据变化跨度很大,没能在20*2000毫秒变化完成,可以将时间设置更长一些。当然也可以加快from的变化速度,让它一次多加/减一些
- public class NumberAnimation extends Animation {
- TextView view;
- int from, to;
- int cha;
- public NumberAnimation(TextView v){
- view = v;
- }
- @Override
- protected void applyTransformation(float interpolatedTime, Transformation t) {
- super.applyTransformation(interpolatedTime, t);
- if (interpolatedTime < 1.0f) {
- if(from != to){
- if(cha > 0){
- from ++;
- view.setText(from + "");
- }else{
- from --;
- view.setText(from + "");
- }
- }
- }
- }
-
- public void setNum(int from, int to){
- this.from = from;
- this.to = to;
- cha = to - from;
- NumberAnimation.this.setDuration(20 * 2000);
- view.startAnimation(NumberAnimation.this);
- }
- }
用法:
- NumberAnimation na = new NumberAnimation(mMenTemperature);
- na.setNum(0, 99);