效果預覽
numberdance.gif
僅需幾行代碼(Kotlin)
inline fun TextView.startNumberDanceAnimation(number: Number, duration: Long) {
val ani = ValueAnimator.ofFloat(0f, number.toFloat()).setDuration(duration)
val format = "%1\$01.${if (number is Float) "2" else "0"}f"
ani.interpolator = AccelerateInterpolator()
ani.addUpdateListener {
text = String.format(format, it.animatedValue)
}
ani.start()
}
調用函數
val tv = findViewById<TextView>(R.id.tvNumber)
val tv2 = findViewById<TextView>(R.id.tvNumber2)
tv.startNumberDanceAnimation(3001, 900)
tv2.startNumberDanceAnimation(8060.33f, 900)
方案優勢
1)一個函數即可實現,無需引入新的TextView子類;
2)代碼簡單易維護;