这个已经是被大家做烂了的效果了,之所以我自己做这个效果而不是直接从网上拷贝一个来用,主要是因为网上的工具不太符合我的要求,大部分网友写的工具都不可以带单位的,只是数字方面的增长效果,而我的APP中需要带上单位,比如公里、升之类的,与其改人家的源码不如自己写一个了。

先看效果图:

1.gif

Android中的动画

这里用到了属性动画,Android中的动画主要分为三大类,分别是视图动画和属性动画。

视图动画分为Tween Animation(补间动画)和Frame Animation(逐帧动画)

属性动画分为ValueAnimator 和 ObjectAnimator;

这里一定要注意一下各种动画引入时Android的版本号,否则动画不会启用,视图动画是API Level 1就引入的,所以支持所有Android的版本,而属性动画是API Level 11引入的,即Android 3.0才开始有属性动画相关的API,故而在使用属性动画时一定要判断API的版本,避免一些不必要的Bug.

实现思路

整个思路很简单,在使用这个组件的过程中有几个点是要考虑进去的,第一,可以是整数类型也可以是浮点型的数字,所以这里要做标识区分开,第二,可以加入单位(核心需求),第三,可以开启是否四舍五入,比如需要整数类型的时候,而传入的数字是浮点型,这时会自动把传入的浮点型转化为整数类型,这里就要考虑四舍五入的问题了。

代码实现

下面来看是如何实现的

实现类:

import android.animation.ValueAnimator;

import android.util.Log;

import android.view.animation.AccelerateInterpolator;

import android.widget.TextView;

/**

* 类描述: 创建人:贾真

* 创建时间:2017/1/23 15:44

*/

public class AutoIncrementUtil {

public static final String FLOATTYPE="FloatType";

public static final String INTTYPE="IntType";

public static void startAnimation(String type,final TextView tvView,float floatValue

,boolean isRoundUp,final String danwei,int duration){

ValueAnimator animator=null;

if(type.equals(FLOATTYPE)){

animator=ValueAnimator.ofFloat(0,floatValue);

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator valueAnimator) {

float curValue = (float)valueAnimator.getAnimatedValue();

Log.e("curValue ",curValue+"");

tvView.setText(NumUtil.FormatFloat(curValue)+danwei);

}

});

}else if(type.equals(INTTYPE)){

String targetValueString =NumUtil.FormatRoundUp(isRoundUp,floatValue);

animator=ValueAnimator.ofInt(0,Integer.parseInt(targetValueString));

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator valueAnimator) {

int curValue = (int)valueAnimator.getAnimatedValue();

tvView.setText(curValue+danwei);

}

});

}

animator.setDuration(duration);

animator.setInterpolator(new AccelerateInterpolator());

animator.start();

}

}

数字转化工具类:

import java.text.DecimalFormat;

public class NumUtil {

private NumUtil(){

}

public static String FormatFloat(float value){

DecimalFormat df = new DecimalFormat("0.00");

return df.format(value);

}

public static String FormatRoundUp(boolean isRoundUp,float value){

DecimalFormat df;

if(isRoundUp){

df = new DecimalFormat("######0"); //四色五入转换成整数

return df.format(value);

}else{

Float f= new Float(value);

int i=f.intValue();

return String.valueOf(i);

}

}

}

如何使用:

AutoIncrementUtil.startAnimation(AutoIncrementUtil.INTTYPE,NumView,153261.93f,false,"公里",1500);

应该说是非常简单了,主要用到了属性动画的ValueAnimator的两个方法,ofInt和ofFloat,剩下的都是按部就班的调用相关的方法即可,大家稍微阅读一下源码就应该懂了。

android 数字 余额宝,仿余额宝数字滚动增长的效果实现相关推荐

  1. 直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果

    直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果 一个飘心的小动画,之前看也看到网上有很多轮子,但是感觉不是很符合我的需求,所以自己就凑活凑活搞出来一个,废话不多说先看图 ...

  2. android的动态tab,Android自定义view仿QQ的Tab按钮动画效果(示例代码)

    话不多说 先上效果图 实现其实很简单,先用两张图 一张是背景的图,一张是笑脸的图片,笑脸的图片是白色,可能看不出来.实现思路:主要是再触摸view的时候同时移动这两个图片,但是移动的距离不一样,造成的 ...

  3. 仿网易新闻顶部菜单html,iOS仿网易新闻滚动导航条效果

    本文实例为大家分享了iOS滚动导航条效果展示的具体代码,供大家参考,具体内容如下 实现效果 效果:选择不同的栏目,下面出现不同的视图,栏目条可以滚动:下面的视图也可以滚动,滚动时上面对应的栏目要选中颜 ...

  4. Android之闪动的、增长的数字(仿余额宝)

    Demo:下载地址

  5. android 动态字幕,Android之如何用TextView实现滚动字幕的效果【跑马灯】

    TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显 ...

  6. Android开发之仿360手机卫士悬浮窗效果

    基本的实现原理,这种桌面悬浮窗的效果很类似与Widget,但是它比Widget要灵活的多.主要是通过WindowManager这个类来实现的,调用这个类的addView方法用于添加一个悬浮窗,upda ...

  7. Android UI动画 仿直播点赞飘心动画效果

    首先在写之前加上效果图: 第一步我们先导入依赖:allprojects {repositories {..........maven { url 'https://jitpack.io' }} }de ...

  8. Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)

    根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...

  9. android 缩放透明动画,Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)...

    根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...

  10. android 高仿 探探卡片滑动,Android自定义View仿探探卡片滑动效果

    Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天来换一种实现思路,只用一个自定义的ViewGroup来搞定这 ...

最新文章

  1. Linux 内核源代码分析 chap 2 存储管理 (5)
  2. pyspider积累
  3. 沈阳初步建成国内领先的城市级大数据资源库
  4. 倒排列表求交集算法汇总
  5. pycharm运行出现ImportError:No module named
  6. Swift - 可编辑表格样例(可直接编辑单元格中内容、移动删除单元格)
  7. @springbootapplication 注解_Spring Boot最核心的27个干货注解,你了解多少?
  8. 解决redhat的未注册问题
  9. decode encode
  10. 【转】一、用于VS2019的QT配置
  11. Google Chrome调试js代码
  12. 双系统 android 华硕,华硕发布Duet TD300,首款真正Windows+安卓双系统笔记本
  13. swift取代python_为什么Swift和Python要抛弃++\--?
  14. asp.net mvc 实现上传文件带进度条
  15. android自定义ViewPager之——水平滑动弹性效果
  16. 国内优秀开源镜像站汇总
  17. uni-app 选择图片上传到服务器、云储存
  18. stress模拟CPU使用100%
  19. Windows 10 出现问题但您可以重试 MSA【closed】
  20. C++17之std::any

热门文章

  1. 手把手教你用Execel计算两个矩阵的乘法
  2. z8350cpu linux,跑分 Intel Z8350小有提升_平板电脑评测-中关村在线
  3. 微信小程序源码分享合集-1
  4. 求素数 java 101 200_Java求101~200之间的素数
  5. 从零搭建一个vue项目
  6. 微信公众号 | 适合程序员的公众号排版
  7. 微信公众号文章编辑排版工具+自动采集+使用视频教程
  8. NPT、PT、G 、ZG、RC、M几种螺纹的区别
  9. 怎么把ide改成ahci_怎么IDE改成AHCI
  10. 17-sendto函数和异步错误