android 数字 余额宝,仿余额宝数字滚动增长的效果实现
这个已经是被大家做烂了的效果了,之所以我自己做这个效果而不是直接从网上拷贝一个来用,主要是因为网上的工具不太符合我的要求,大部分网友写的工具都不可以带单位的,只是数字方面的增长效果,而我的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 数字 余额宝,仿余额宝数字滚动增长的效果实现相关推荐
- 直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果
直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果 一个飘心的小动画,之前看也看到网上有很多轮子,但是感觉不是很符合我的需求,所以自己就凑活凑活搞出来一个,废话不多说先看图 ...
- android的动态tab,Android自定义view仿QQ的Tab按钮动画效果(示例代码)
话不多说 先上效果图 实现其实很简单,先用两张图 一张是背景的图,一张是笑脸的图片,笑脸的图片是白色,可能看不出来.实现思路:主要是再触摸view的时候同时移动这两个图片,但是移动的距离不一样,造成的 ...
- 仿网易新闻顶部菜单html,iOS仿网易新闻滚动导航条效果
本文实例为大家分享了iOS滚动导航条效果展示的具体代码,供大家参考,具体内容如下 实现效果 效果:选择不同的栏目,下面出现不同的视图,栏目条可以滚动:下面的视图也可以滚动,滚动时上面对应的栏目要选中颜 ...
- Android之闪动的、增长的数字(仿余额宝)
Demo:下载地址
- android 动态字幕,Android之如何用TextView实现滚动字幕的效果【跑马灯】
TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显 ...
- Android开发之仿360手机卫士悬浮窗效果
基本的实现原理,这种桌面悬浮窗的效果很类似与Widget,但是它比Widget要灵活的多.主要是通过WindowManager这个类来实现的,调用这个类的addView方法用于添加一个悬浮窗,upda ...
- Android UI动画 仿直播点赞飘心动画效果
首先在写之前加上效果图: 第一步我们先导入依赖:allprojects {repositories {..........maven { url 'https://jitpack.io' }} }de ...
- Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)
根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...
- android 缩放透明动画,Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)...
根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...
- android 高仿 探探卡片滑动,Android自定义View仿探探卡片滑动效果
Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天来换一种实现思路,只用一个自定义的ViewGroup来搞定这 ...
最新文章
- Linux 内核源代码分析 chap 2 存储管理 (5)
- pyspider积累
- 沈阳初步建成国内领先的城市级大数据资源库
- 倒排列表求交集算法汇总
- pycharm运行出现ImportError:No module named
- Swift - 可编辑表格样例(可直接编辑单元格中内容、移动删除单元格)
- @springbootapplication 注解_Spring Boot最核心的27个干货注解,你了解多少?
- 解决redhat的未注册问题
- decode encode
- 【转】一、用于VS2019的QT配置
- Google Chrome调试js代码
- 双系统 android 华硕,华硕发布Duet TD300,首款真正Windows+安卓双系统笔记本
- swift取代python_为什么Swift和Python要抛弃++\--?
- asp.net mvc 实现上传文件带进度条
- android自定义ViewPager之——水平滑动弹性效果
- 国内优秀开源镜像站汇总
- uni-app 选择图片上传到服务器、云储存
- stress模拟CPU使用100%
- Windows 10 出现问题但您可以重试 MSA【closed】
- C++17之std::any