利用RiseNumberTextView组件简单实现数字滚动效果

本文介绍了如何利用RiseNumberTextView组件在Android应用中创建数字滚动效果,类似于支付宝余额变化。首先,需要下载NineOldAndroids库,然后创建组件并实现接口。在MainActivity中设置按钮点击事件,即可实现数字的动态滚动展示。
摘要由CSDN通过智能技术生成

利用RiseNumberTextView组件简单实现数字滚动效果

一、简介

在日常开发需求中,很多时候需要向用户展现数字变化的动态效果,比如余额,正确率之类的变化,使得用户更直观地感受数字的变动,因此本文主要介绍如何使用开源组件RiseNumberTextView来实现类似支付宝界面余额变动的效果。

效果:
在这里插入图片描述

二、前期准备

  1. 下载jar包: https://github.com/downloads/JakeWharton/NineOldAndroids/nineoldandroids-2.4.0.jar
  2. 将下载好的jar包复制到app/libs目录下
    下载jar包
  3. 右键点击jar包,选择Add As Library,将该jar包导入库中
    导入库

三、编写组件

  1. 创建一个包存放组件的接口与类文件
    创建包
  2. 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);
}

  1. 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
一、介绍这是一个可以让数字滚动TextView,他能兼容正数,负数,甚至是小数。翻滚的数字精度也完全可以由自己控制,每次可以变化精度的n倍,通过此功能可以实现倒数第一反转,倒数第二位翻转,倒数第n位翻转。支持设置开始翻滚的数值以及动画的最大时间。可以在数字后面设置单位,以前前面设置符号。支持控件属性设置二、使用使用1、项目配置   1.1、在上图标注1的文件中找到相应位置加入下面代码dependencies {        compile 'com.github.onlybeyond:NubmerTextVeiw:1.0.7' }1.2在上图标注2的文件中找到相应位置加入下面代码allprojects {     repositories {         maven { url 'https://jitpack.io' }     } }1.3同步一下配置结束了2.使用 2.1、正负数的使用 默认效果从零开始,以最小精度开始动画 ,支持正负数,可以直接设置                 ntvTestOne.setNumberValue("100");  ntvTestOne.setNumberValue("-100");2.2支持小数,可以n倍精度变化,通过这个功能,可以实现倒数第一位滚动,倒数第二位滚动,倒数n位滚动。            //三倍精度增长     ntvTestThree.setRollInt(3);     ntvTestTwo.setUseMax(true);     ntvTestThree.setNumberValue("100.9");     //倒数第二位变化     ntvTestFour.setRollInt(10);     ntvTestFour.setNumberValue("100.9");     //倒数第三位变化     ntvTestFive.setRollInt(100);     ntvTestFive.setNumberValue("100.9");2.3支持动画开始值的设定,以及动画最长时间的设置。这样可以拒绝从0开始的傻瓜式增长,通过该设置可以实现动画位数,例如比如168,设置成150开始,就是最后两位滚动。最长时间的设置可以保证当数字很大时,一直看动画-> _-> 并且支持动画结束以后的回调,可以查看动画开始时间,以及动画时间(时间与设定会有略微差距).但设置了开始值又设定了动画时间,会比较哪一种方式比较快就会取哪一种    ntvTestSix.setNumberValue("95","100"); ntvTestSeven.setMaxAnimDuration(2000); ntvTestSeven.setUseMax(true); ntvTestSeven.setNumberTextViewListener(new NumberTextView.NumberTextViewListener() {             @Override             public void animStart(long l) {             }             @Override             public void animEnd(long l, long l1) {                 tvTestSevenTime.setText("时间:" l1);             }         });         ntvTestSeven.setNumberValue("100");2.4支持数值前后添加文字,这样在数字前面添加符号,在数字后面添加单位,满足更多的应用场景。        ntvTestEight.setNumberValue("100");         ntvTestEight.setNumberValueSymbol("$");         ntvTestEight.setNumberValueUnit("元");2.5支持属性配置文件,使用起来更佳简便 <com.onlybeyond.numbertextview.NumberTextView         android:id="@ id/ntv_test_nine"         app:ntvStartValue="80"         app:ntvRollInt="3"         android:layout_width="wrap_content"         android:layout_height="wrap_content" /> //Activity         ntvTestNine.setNumberValue("100.9");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值