失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android数字滚动动画 Android超简单实现金钱滚动效果

android数字滚动动画 Android超简单实现金钱滚动效果

时间:2021-12-02 10:23:33

相关推荐

android数字滚动动画 Android超简单实现金钱滚动效果

目录

目录

效果展示

实现原理

利用ValueAnimator将数值从0一直增长到你所需要展示的数值,然后使用TextView将增长过程中的数值不断展示即可实现金钱的滚动效果。

ValueAnimator基础讲解

ValueAnimator是Android中用来实现属性动画的类,它是Android3.0后才引入的,它可以实现将数值从某一个值到某一个值的变化,比如ValueAnimator.ofInt(10,100)就可以实现数值从10到100的变化,而此方法的参数类型是可变长度的参数,即可以传入多个数值,比如ValueAnimator.ofInt(10,100,20)则可实现数值从10到100到20的变化,那么我们如何获取期间变化的值呢?这里我们通过valueAnimator.addUpdateListener()添加一个监听事件来获取,而动画的时长可以用setDuration()方法来设置。

ValueAnimator mValueAnimator = ValueAnimator.ofInt(0,100);

mValueAnimator.setDuration(1000);//动画时间为1秒

mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

int value = (int) animation.getAnimatedValue();//获取期间变化的值

}

});

实现效果(代码展示)

public class RunnTextView extends TextView {

private ValueAnimator mValueAnimator;

private DecimalFormat mDf;

public RunnTextView(Context context) {

this(context,null);

}

public RunnTextView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs,0);

}

public RunnTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init() {

//格式化小数(保留小数点后两位)

mDf = new DecimalFormat("0.00");

initAnim();

}

/**

* 初始化动画

*/

private void initAnim() {

mValueAnimator = ValueAnimator.ofFloat(0,0);//由于金钱是小数所以这里使用ofFloat方法

mValueAnimator.setDuration(1000);//动画时间为1秒

mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

float value = (float) animation.getAnimatedValue();

if(value>0){//当数值大于0的时候才赋值

setText(mDf.format(value));

}

}

});

}

/**

* 设置要显示的金钱

* @param money

*/

public void setMoney(float money){

mValueAnimator.setFloatValues(0,money);//重新设置数值的变化区间

mValueAnimator.start();//开启动画

}

/**

* 取消动画和动画监听(优化内存)

*/

public void cancle(){

mValueAnimator.removeAllUpdateListeners();//清除监听事件

mValueAnimator.cancel();//取消动画

}

}

如果觉得《android数字滚动动画 Android超简单实现金钱滚动效果》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。