仿京东金融小数点动画之Android 保留两位小数的坑

首先先实现动画吧,用ValueAnimator实现这个京东金融小数点过度动画

先贴代码:

[java]view plain

ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,1000);

valueAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener() {

@Override

publicvoidonAnimationUpdate(ValueAnimator valueAnimator) {

floatanimatedValue = (float) valueAnimator.getAnimatedValue();

textview.setText("$"+ animatedValue);

}

});

valueAnimator.setDuration(6000);

valueAnimator.start();

上面代码虽然能实现动画,但是保留小数位有点多,如下图:

截图中有五位小数点

仿京东金融小数点动画之Android 保留两位小数的坑_第1张图片

开始踩坑:

使用DecimalFormat 类

[java]view plain

DecimalFormat decimalFormat =newDecimalFormat("#.00");

String formatStr = decimalFormat.format(valueAnimator);

最低API 需要 Lever 24

剩余几种都是API不兼容:

使用BigDecimal类

[java]view plain

BigDecimal bigDecima =newBigDecimal(valueAnimator);

doublev = bigDecima.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

使用NumberFormat类

[java]view plain

NumberFormat nf = NumberFormat.getNumberInstance();

nf.setMaximumFractionDigits(2);

String format = nf.format(valueAnimator);

最后使用Math类成功:

[java]view plain

floatanimatedValueFloat = (float) (Math.round(animatedValue *100) /100.0);

[java]view plain

[java]view plain

成功保留两位截图:

仿京东金融小数点动画之Android 保留两位小数的坑_第2张图片

你可能感兴趣的:(仿京东金融小数点动画之Android 保留两位小数的坑)