分享

仿余额宝的数字动画效果

 火柴个人资料馆 2017-03-17
一个简单的自定义类
import android.animation.ObjectAnimator;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;

/**
*  * 高仿余额宝数字动画
*  
*/
public class CountNumberView extends TextView {
//动画时长
private int duration = 1500;
//显示数字
private float number;
//显示表达式
private String regex;
//显示表示式
public static final String INTREGEX = "%1$01.0f";//不保留小数,整数
public static final String FLOATREGEX = "%1$01.2f";//保留2位小数
public static final String ONEREGEX = "%1$01.1f";//保留1位小数

public CountNumberView(Context context, AttributeSet attrs) {
super(context, attrs);
}

/***
* 显示带有动画效果的数字
*  * @param number
*  * @param regex
*  
*/
public void showNumberWithAnimation(float number, String regex, String time) {
if (TextUtils.isEmpty(regex)) {
//默认为整数
this.regex = INTREGEX;
} else {
this.regex = regex;
}
if (TextUtils.isEmpty(time)) {
duration = 0;
} else {
duration = 1500;
}
//修改number属性,会调用setNumber方法
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number", 0, number);
objectAnimator.setDuration(duration);
//加速器,从慢到快到再到慢
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
}

/**
* 获取当前数字
*
* @return
*/
public float getNumber() {
return number;
}

/**
* 根据正则表达式,显示对应数字样式
*
* @param number
*/

public void setNumber(float number) {
this.number = number;
setText(String.format(regex, number));
}
}

直接在布局中 当成TextView使用即可 
private CountNumberView tv_getbalance;
tv_getbalance = (CountNumberView) findViewById(R.id.tv_getbalance);
tv_getbalance.showNumberWithAnimation(f, CountNumberView.ONEREGEX, null);
f为Float类型的 数据 后面为保留小数位数 效果为 支付宝数字跑动效果


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多