首先先實(shí)現(xiàn)動(dòng)畫(huà)吧,用ValueAnimator實(shí)現(xiàn)這個(gè)京東金融小數(shù)點(diǎn)過(guò)度動(dòng)畫(huà)
先貼代碼:
[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();
上面代碼雖然能實(shí)現(xiàn)動(dòng)畫(huà)疫粥,但是保留小數(shù)位有點(diǎn)多,如下圖:
截圖中有五位小數(shù)點(diǎn)
開(kāi)始踩坑:
使用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
成功保留兩位截圖: