利用RiseNumberTextView组件简单实现数字滚动效果
利用RiseNumberTextView组件简单实现数字滚动效果
一、简介
在日常开发需求中,很多时候需要向用户展现数字变化的动态效果,比如余额,正确率之类的变化,使得用户更直观地感受数字的变动,因此本文主要介绍如何使用开源组件RiseNumberTextView来实现类似支付宝界面余额变动的效果。
效果:
二、前期准备
- 下载jar包: https://github.com/downloads/JakeWharton/NineOldAndroids/nineoldandroids-2.4.0.jar
- 将下载好的jar包复制到app/libs目录下
- 右键点击jar包,选择Add As Library,将该jar包导入库中
三、编写组件
- 创建一个包存放组件的接口与类文件
- RiseNumberBase 接口声明
接口说明:
接口 | 说明 |
---|---|
start() | 开始滚动效果 |
withNumber(float number) | 显示浮点型数字 |
withNumber(int number) | 显示整型数字 |
setDuration(long duration) | 持续时间 |
package lib;
public interface RiseNumberBase {
public void start();
public RiseNumberTextView withNumber(float number);
public RiseNumberTextView withNumber(int number);
public RiseNumberTextView setDuration(long duration);
public void setOnEnd(RiseNumberTextView.EndListener callback);
}
- RiseNumberTextView 接口实现,如果想修改数字滚动功能,可在下面的代码中修改
package lib;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import com.nineoldandroids.animation.ValueAnimator; //使用到刚才导入的jar包
import java.text.DecimalFormat;
/*RiseNumberTextView继承了TextView来实现接口RiseNumberBase*/
public class RiseNumberTextView extends TextView implements RiseNumberBase{
private static final int STOPPED = 0;
private static final int RUNNING = 1;
private int mPlayingState = STOPPED;
private float number;
private float fromNumber;
private long duration=1500;
private int numberType=2;
private DecimalFormat fnum;
private EndListener mEndListener=null;
final static int[] sizeTable = {
9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE };
public RiseNumberTextView(Context context){
super(context);
}
public RiseNumberTextView(Context context,AttributeSet attr){
super(context,attr