简介

好久没有写博客了,最近公司产品刚发布了,终于有一点休闲的时间了,趁这个空闲的时间,今天给大家写一个数字动画的效果,可能在以后的时间,或许大家会用的到,值得大家收藏,直接拿过去用就好了。

一:想都不用想的,有图有真相,看着爽了,在看下面源码

二:实例源码分析

①:首先定义接口
package com.demo.tools.view;/*** 数字动画自定义* * @author zengtao 2015年7月17日 上午11:48:27 **/
public interface RiseNumberBase {public void start();public RiseNumberTextView withNumber(float number);public RiseNumberTextView withNumber(float number, boolean flag);public RiseNumberTextView withNumber(int number);public RiseNumberTextView setDuration(long duration);public void setOnEnd(RiseNumberTextView.EndListener callback);
}

②:自定义控件

package com.demo.tools.view;import android.animation.ValueAnimator;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;import com.demo.tools.Utils;/*** 数字动画自定义* * @author zengtao 2015年7月17日 上午11:48:03 **/
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 = 1000;/*** 1.int 2.float*/private int numberType = 2;private boolean flags = true;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);}public RiseNumberTextView(Context context, AttributeSet attr, int defStyle) {super(context, attr, defStyle);}public interface EndListener {public void onEndFinish();}public boolean isRunning() {return (mPlayingState == RUNNING);}private void runFloat() {ValueAnimator valueAnimator = ValueAnimator.ofFloat(fromNumber, number);valueAnimator.setDuration(duration);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {if (flags) {setText(Utils.format(",##0.00").format(Double.parseDouble(valueAnimator.getAnimatedValue().toString())) + "");if (valueAnimator.getAnimatedValue().toString().equalsIgnoreCase(number + "")) {setText(Utils.format(",##0.00").format(Double.parseDouble(number + "")));}} else {setText(Utils.format("##0.00").format(Double.parseDouble(valueAnimator.getAnimatedValue().toString())) + "");if (valueAnimator.getAnimatedValue().toString().equalsIgnoreCase(number + "")) {setText(Utils.format("##0.00").format(Double.parseDouble(number + "")));}}if (valueAnimator.getAnimatedFraction() >= 1) {mPlayingState = STOPPED;if (mEndListener != null)mEndListener.onEndFinish();}}});valueAnimator.start();}private void runInt() {ValueAnimator valueAnimator = ValueAnimator.ofInt((int) fromNumber, (int) number);valueAnimator.setDuration(duration);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {setText(valueAnimator.getAnimatedValue().toString());if (valueAnimator.getAnimatedFraction() >= 1) {mPlayingState = STOPPED;if (mEndListener != null)mEndListener.onEndFinish();}}});valueAnimator.start();}static int sizeOfInt(int x) {for (int i = 0;; i++)if (x <= sizeTable[i])return i + 1;}@Overrideprotected void onFinishInflate() {super.onFinishInflate();}@Overridepublic void start() {if (!isRunning()) {mPlayingState = RUNNING;if (numberType == 1)runInt();elserunFloat();}}@Overridepublic RiseNumberTextView withNumber(float number, boolean flag) {this.number = number;this.flags = flag;numberType = 2;fromNumber = 0;return this;}@Overridepublic RiseNumberTextView withNumber(float number) {System.out.println(number);this.number = number;numberType = 2;fromNumber = 0;return this;}@Overridepublic RiseNumberTextView withNumber(int number) {this.number = number;numberType = 1;fromNumber = 0;return this;}@Overridepublic RiseNumberTextView setDuration(long duration) {this.duration = duration;return this;}@Overridepublic void setOnEnd(EndListener callback) {mEndListener = callback;}
}

③工具类的编写

package com.demo.tools;import java.math.RoundingMode;
import java.text.DecimalFormat;/*** 配置文件* @author zengtao 2015年7月17日 上午11:47:44 **/
public class Utils {/*** 格式化*/private static DecimalFormat dfs = null;public static DecimalFormat format(String pattern) {if (dfs == null) {dfs = new DecimalFormat();}dfs.setRoundingMode(RoundingMode.FLOOR);dfs.applyPattern(pattern);return dfs;}
}

三:主界面调用

package com.demo.ui;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;import com.demo.tools.view.RiseNumberTextView;/*** 数字动画* * @author zengtao 2015年7月17日 上午11:48:54 **/
public class MainActivity extends Activity {private RiseNumberTextView number1, number2, number3, number4, number5;private Button start;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);initView();}private void initView() {number1 = (RiseNumberTextView) findViewById(R.id.number1);number2 = (RiseNumberTextView) findViewById(R.id.number2);number3 = (RiseNumberTextView) findViewById(R.id.number3);number4 = (RiseNumberTextView) findViewById(R.id.number4);number5 = (RiseNumberTextView) findViewById(R.id.number5);start = (Button) findViewById(R.id.start);start.setOnClickListener(listener);}OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {if (v == start) {initData();}}};private void initData() {number1.withNumber(12.3f).start();number2.withNumber(16.3f).start();number3.withNumber(10.3f).start();number4.withNumber(18.3f).start();number5.withNumber(17.3f).start();}
}

四:总结

以上就完成了,一个数字动画的自定义,看起来非常的简单,就这样xxx,三下五除二,就直接可以了,如果大家喜欢,谁有需要的,可以直接拿去用。
Demo下载地址:http://download.csdn.net/detail/u011546655/8908663
如果大家有空,点一点,赞一赞,评一评,那就完美了

Android 仿余额宝数字动画实现相关推荐

  1. android 文字跳动动画,Android 仿余额宝数字跳动动画效果完整代码

    Android 仿余额宝数字跳动动画效果完整代码 发布时间:2020-08-24 06:55:30 来源:脚本之家 阅读:120 作者:曾淘 一:想都不用想的,有图有真相,看着爽了,在看下面源码 二: ...

  2. android金币动效_Android 仿余额宝数字跳动动画效果完整代码

    一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...

  3. Android 仿微信红包动画 平移动画

    Android 仿微信红包动画 平移动画 先看效果图: 简单思路: 先找好素材,一张红包封面和 "开"这个图片,先用ps将红包图片P成两部分,两个椭圆的样子."开&quo ...

  4. android仿ppt,android 仿ppt进入动画效果合集

    EnterAnimation android 仿ppt进入动画效果合集, 百叶窗效果,擦除效果,盒状效果,阶梯效果,菱形效果,轮子效果,劈裂效果,棋盘效果, 切入效果,扇形展开效果,十字扩展效果,随机 ...

  5. android 密码解锁程序,android 仿ios数字密码解锁界面的实例

    如下所示: 每个Android开发人员都知道,现在android的解锁最常用的就是九宫格解锁,ios的解锁常用的是数字密码解锁.而我们在开发工程中,很多时候,都需要android和ios进行结合.有的 ...

  6. android 仿ppt进入动画效果合集

    EnterAnimation android 仿ppt进入动画效果合集, 百叶窗效果,擦除效果,盒状效果,阶梯效果,菱形效果,轮子效果,劈裂效果,棋盘效果, 切入效果,扇形展开效果,十字扩展效果,随机 ...

  7. android仿微信红包动画,Android仿打开微信红包动画效果实现代码

    首先看下效果: 实现原理: 准备3张不同角度的图片,通过AnimationDrawable帧动画进行播放即可 代码实现: 1.编写动画xml文件: 根标签为animation-list,其中onesh ...

  8. android仿微信红包动画、Kotlin综合应用、Xposed模块、炫酷下拉视觉、UC浏览器滑动动画等源码...

    Android精选源码 仿微信打开红包旋转动画 使用Kotlin编写的Android应用,内容你想象不到 Android手机上的免Root Android系统日志Viewer 一个能让微信 Mater ...

  9. android仿微信红包动画、Kotlin综合应用、Xposed模块、炫酷下拉视觉、UC浏览器滑动动画等源码

    Android精选源码 仿微信打开红包旋转动画 使用Kotlin编写的Android应用,内容你想象不到 Android手机上的免Root Android系统日志Viewer 一个能让微信 Mater ...

最新文章

  1. hdu 1086 A - You can Solve a Geometry Problem too (线段的规范相交非规范相交)
  2. 在不同应用场景中,我们该如何进行测试呢?
  3. 怎样才能打开Tuxera NTFS的主界面?
  4. MySQL创建新连接时,不能成功连接的问题
  5. python:批量移动指定文件到指定文件夹(模板)
  6. 三菱q plc modbus通讯协议详解_三菱PLC串口通讯模块QJ71C24N和MR-JE-A的modbus通讯
  7. openfire+XMPP实现即时通讯
  8. python补考卷子_1819级计算机专业补考(python程序设计)_章节测验,期末考试,慕课答案查询公众号...
  9. 直通车的计算机设备跟移动设备的区别,电脑端直通车和手淘直通车的有什么不同?...
  10. Django开发个人博客网站——11、通过regroup实现博客的归档
  11. 有哪些有用的人际交往小常识?
  12. 哈希原理与常见哈希函数
  13. preempt_disable导致的cyclictest测试延时超标
  14. 哥伦比亚大学计算机科学硕士排名,哥伦比亚大学计算机科学硕士排名第16(2020年TFE Times排名)...
  15. 用Ps制作网页展示总结
  16. 山西大同大学计算机分数线,山西大同大学录取分数线2021是多少分(附历年录取分数线)...
  17. 吴恩达新课 医学图像AI(AI for Medicine)专项课程推荐
  18. 【学习打卡 Free-Excel 】Task9 数据透视
  19. 干净卸载mac上的软件
  20. coures包下载和安装 可解决报错ImportError: No module named '_curses'

热门文章

  1. SCI数据库使用手册(无图版)
  2. 李宁卖咖啡,意欲何为?
  3. android ContentValues类
  4. Java课程设计基于SSM的出租房管理
  5. 最新流浪猫流浪狗H5完整运营源码下载/可封装APP
  6. 阿里云视频点播播放出错,控制台访问出现code:4400
  7. win7系统搜索共享的计算机名,win7系统共享打印机搜索ip需用户名和密码怎么回事...
  8. 安卓微信跳转页面、重定向页面空白,ios系统正常、pc正常、安卓浏览器正常。
  9. pdf 电子签章 java_利用itextpdf实现简单的电子签章/水印等
  10. PS改变图片像素大小(一寸照片变二寸)