Android仿支付宝中余额宝的数字动画效果

实现效果图:

下面是具体代码,可直接复制:

package com.lcw.rabbit.widget;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;

/**
 * 高仿余额宝数字动画
 * Create by: chenwei.li
 * Date: 2016-07-20
 * time: 11:52
 * Email: lichenwei.me@foxmail.com
 */
public class CountNumberView extends TextView {
 //动画时长
 private int duration = 1500;
 //显示数字
 private float number;
 //显示表达式
 private String regex;

 //显示表示式
 public static final String INTREGEX = "%1$01.0f";//不保留小数,整数
 public static final String FLOATREGEX = "%1$01.2f";//保留2位小数

 public CountNumberView(Context context, AttributeSet attrs) {
 super(context, attrs);
 }

 /**
 * 显示带有动画效果的数字
 * @param number
 * @param regex
 */
 public void showNumberWithAnimation(float number, String regex) {
 if (TextUtils.isEmpty(regex)) {
  //默认为整数
  this.regex = INTREGEX;
 } else {
  this.regex = regex;
 }
 //修改number属性,会调用setNumber方法
 ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number", 0, number);
 objectAnimator.setDuration(duration);
 //加速器,从慢到快到再到慢
 objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
 objectAnimator.start();
 }

 /**
 * 获取当前数字
 * @return
 */
 public float getNumber() {
 return number;
 }

 /**
 * 根据正则表达式,显示对应数字样式
 * @param number
 */
 public void setNumber(float number) {
 this.number = number;
 setText(String.format(regex, number));
 }
}

使用方法,在XML里声明后(可以完全当成TextView来使用),直接在Java文件里调用:

 mTvCountNum1.showNumberWithAnimation(3201.23f, CountNumberView.FLOATREGEX);
 mTvCountNum2.showNumberWithAnimation(65535f, CountNumberView.INTREGEX);

这里为了灵活使用,预留了数字显示格式(默认提供整型号和浮点型),大家可以根据自己的需要去更改Regex

关于String.format的第一个格式参数,这里引用下api的描述:

常规类型、字符类型和数值类型的格式说明符的语法如下:

%[argument_index$][flags][width][.precision]conversion

可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。

可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。

总结

Android仿支付宝中余额宝的数字动画效果到这就结束了,希望这篇文章对大家在Android开发中能有所帮助,如果有疑问可以留言交流。

时间: 2016-08-27

Android实现数字跳动效果的TextView方法示例

前言 本文介绍的是Android如何实现数字跳动效果的TextView,主要运用了DancingNumberView,DancingNumberView是一个用于跳动显示文本中数字的控件,继承自TextView,这种控件一般用于显示金额等对用户较为敏感的数字,让UI交互更加生动. 它具有以下几点特性: 自动获取文本中的所有数字,并同时开始跳动,免去多个TextView拼接的麻烦 支持数字按照自定义的格式显示,例如限定只显示小数点后两位 效果图如下 导入使用 Gradle 第1步,在project

Android带数字或红点的底部导航拦和联网等待加载动画示例

Android带数字或红点的底部导航拦和联网等待加载动画 首先展示一下截图效果,下载地址在文章最后 一.Android带红点的底部导航拦 1.首先写底部导航栏的界面view_main_tab.xml. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and

Android自定义SeekBar滑动显示数字

先来上个效果图: 当滑动时:数值显示,滑动停止时显示数字,使用FrameLayout结合SeekBar. 首先我们看看. Layout: <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

Android自定义Seekbar滑动条 Pop提示跟随滑动按钮滑动

本文实例为大家分享了Android自定义Seekbar滑动条的具体代码,供大家参考,具体内容如下 由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attrs.xml,用于设置跟随滑动按钮的文字大小,颜色,背景. <declare-styleable name="MySeekBar"> <attr name="text

Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码

在最近的开发工作中,要实现一个调色板的进度条,SeekBar要分成10段显示不同颜色,功夫不负有心人,终于实现了这个功能,下面分享给大家 示例图: 1.自定义SeekBar import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import

Android自定义View实现带数字的进度条实例代码

第一步.效果展示 图1.蓝色的进度条 图2.红色的进度条 图3.多条颜色不同的进度条 图4.多条颜色不同的进度条 第二步.自定义ProgressBar实现带数字的进度条 0.项目结构 如上图所示:library项目为自定义的带数字的进度条NumberProgressBar的具体实现,demo项目为示例项目以工程依赖的方式引用library项目,然后使用自定义的带数字的进度条NumberProgressBar来做展示 如上图所示:自定义的带数字的进度条的library项目的结构图 如上图所示:de

Android 自定义SeekBar动态改变硬件音量大小实现和音量键的同步(推荐)

1,上图: 2,代码: MainActivity.Java package com.hero.zhaoq.seekbarchangeddemo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObse

Android自定义横向滑动菜单的实现

本文讲述了Android自定义横向滑动菜单的实现.分享给大家供大家参考,具体如下: 前言 开发安卓过程中,经常会用到标题栏的样式,有时候传统方式不能满足开发者的需要,这时候就需要自定义控件来实现.(注意:本文提供思路,有关键代码,但是代码不全) 标题栏说明 自定义标题栏ColumnHorizontalScrollView继承HorizontalScrollView 这个安卓原生的控件,HorizontalScrollView是一种FrameLayout(框架布局),其子项被滚动查看时是整体移动的

Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结

先来段Behavior代码,网上关于FloatingActionButton(以下简称FAB)滑动的代码很多了,参考一下. public class FabBehavior extends FloatingActionButton.Behavior{ private static final Interpolator INTERPOLATOR = new FastOutSlowInInterpolator(); private boolean mIsAnimatingOut = false; p

Android自定义LinearLayout布局显示不完整的解决方法

发现问题 原需求,在一个伸缩列表中,自定义LinearLayout继承LinearLayout动态添加布局. 然而实现的时候:一共遍历了30条数据,却只显示了一条 断点查看代码:遍历addView()这个过程是正常的30次循环.那是布局的问题? 感觉没毛病...试着在自定义布局外层再加一层LinearLayout垂直方向,wrap_content和match_parent?都试了依旧无效 毛发都被抓掉了好几根 . . 只能谷歌,找度娘了 终于翻到这个Android - 自定义View不显示,非常

android自定义圆形倒计时显示控件

本文实例为大家分享了android自定义圆形倒计时显示控件的具体代码,供大家参考,具体内容如下 先上效果图 - 倒计时结束 代码块 attr.xml 控件需要用到的属性: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CountDownView"> <!--颜色--> <attr name

android自定义Toast设定显示时间

开发android的同学可能会抱怨Toast设定显示的时长无效,只能是Toast.LENGTH_LONG 或者Toast.LENGTH_SHORT 之一,为了解决这些办法,有多种实现方式: 1.使用定时器,定时调用show()方法. 2.使用CountDownTimer类,也是调用show()方法. 3.使用WindownManager类实现. 本文使用方法三进行实现,难度不大,直接看代码吧. package com.open.toast; import android.content.Cont