一、先看网易中奖奖池的效果

二、思路

明显的动画效果,而且是随着时间的推移,前面的数字暂停下来。数字的滚动用线程?!当然可以实现。但是前面的数字停下,这种效果不好处理。我开始想的是从最大的数字开始跑,一直减到0,在跑的过程中比对数字的位数,高位的就截取最终的结果,低位的显示当前的计数。同样的很麻烦,而且控制不了显示的位数,万一显示上亿,GG了。
换思路,我发现网易的动画里每个位置上的数字都是很随机的出现,不是规律的递减。那就获取最终结果的位数,然后线程里随机0到9:

        StringBuilder sb = new StringBuilder();for (int i = 0; i < size; i++) {sb.append((int) Math.ceil(Math.random() * 9));}return sb.toString();

如果size是5,返回的一直是一个五位数,当很快速的刷新的时候,效果就很动画了。
上述代码实际测试可以实现。但是要想实现前面的数字暂停下来的效果,又没有了思路。

三、巧合

在搜索的时候,发现属性动画里有一个参数fraction,一直是从0到1(左右包含)的变化,感觉很有戏。因为这个暂停的数字看作进度,也是从[0,1]区间里变化。

3.1 定义估值器

    public class NumberEvaluator implements TypeEvaluator<String> {@Overridepublic String evaluate(float fraction, String startValue, String endValue) {int size = endValue.length();StringBuilder sb = new StringBuilder();for (int i = 0; i < size; i++) {if(i * 1.0 / size > fraction) {sb.append((int) Math.ceil(Math.random() * 9));}else{sb.append(String.valueOf(endValue).charAt(i));}}return sb.toString();}}

这个类就是传入一个开始值和一个结束值,然后返回无数的中间值,这个fraction默认0到1变化(不知道可不可以改变)。我们遍历显示的位数,如果它与整体的比值大于fraction,说明进度还没有到,如果小于,说明已经过了这个进度,画个图示意一下:

就是随着时间的流逝,返回最终值得前几位和随机值的组合。

四、代码实现

        ValueAnimator numberAnim = ValueAnimator.ofObject(new NumberEvaluator(), "0", "676767676767");numberAnim.setDuration(3000);numberAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {String number = (String) animation.getAnimatedValue();tvNumber.setText(number);}});numberAnim.start();numberAnim.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {tvNumber.setText("676767676767");}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});

new一个定义的估值器扔进去,起始值不关心,传空,传一个最终的显示值,然后动画里不断的监听拿到中间值设置进去,动画结束,把最终的值设置上,结束。

五、最终效果

附上GayHub地址,有兴趣可以肛一波。

属性动画-仿网易彩票数字奖池动画效果相关推荐

  1. Android仿网易游戏的精美开场动画+动画基础详解

    可以看到现在不少app都加入了开场动画,效果还是挺不错的,今天我就在这分享一下仿网易游戏的开场动画制作,同时我也在文章中加入了Android动画基础的详解,接下来就进入主题吧. 首先是布局文件: &l ...

  2. Android 动画(二) 实战演示——仿网易新闻安卓端菜单栏动画

    欢迎转载,转载请注明出处: http://blog.csdn.net/u010181592 经过上一篇博客 的动画基础知识积累,这次来实战一下,模仿网易新闻 安卓客户端右上角菜单栏出现的动画,效果是这 ...

  3. Android 每周一个小轮子之 学习仿网易云广场歌单的效果

    这一篇Blog是学习自:Android自定义ViewGroup第十三式之移花接木 小缘老哥太顶了,写的东西都巨棒,关注Ta很久了,我决定向他学习,学着去像他那样思考问题. 建议各位老哥都去关注他! 这 ...

  4. Android 每周一个小轮子之 学习仿网易云广场歌单的效果

    /** 这里要自己写一个ViewGroup的LayoutParams来记录 scale.alpha.from.to */ class RikkaLayoutParams extends MarginL ...

  5. 动画特效十五:网易新闻之头部导航切换效果

    本人录制技术视频地址:https://edu.csdn.net/lecturer/1899 欢迎观看. 这一节继续和大家探讨iOS中的动画效果,由于网易新闻中的动画效果比较多,所以我分两个章节进行介绍 ...

  6. 做7秒动画赢13W大奖?总奖池超80W、国内最火爆的3D渲染动画创作大赛开始报名!

    有人本科在读就被大厂选中?有人初露锋芒便商单接到手软?还有人一战成名全网爆火?全因为参与了这个CG赛事获得了官方流量扶持,大V媒体精准曝光!还获得了高视野的行业交流和更多的业界合作机会! 总奖池超80 ...

  7. 仿网易‘垃圾箱’动画效果

    一说到动画,大家会说到CSS3动画,确实,本文带来一片简单的仿网易'垃圾箱'动画效果,涉及到的知识点是transform.transition transform 属性向元素应用 2D 或 3D 转换 ...

  8. 仿网易音乐听歌识曲-麦克风动画

    仿网易音乐听歌识曲-麦克风动画 最近准备做一个关于麦克风的类库,平时听歌也基本用网易音乐,发现了这个效果挺不错的,所以实现收集起来. 一.效果图 二.实现思路分析 透明度变换的体现: 半径不断扩散: ...

  9. RN实现仿余额宝余额数字翻滚动画特效

    前语 前段时间公司有个需求,需要实现一个数字翻滚的动画,要求为:数字格式化为每隔3位逗号分隔,数字最后三位执行动画,从左往右,依次翻滚,翻滚时间持续3秒钟,类似于余额宝金额滚动的动画,要求RN实现,效 ...

最新文章

  1. Digg 让 八 动起来,让 八 产生价值
  2. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
  3. java main方法调用非静态方法_java中main函数怎么调用外部非static方法
  4. 基于Windows Socket 的网络通信中的心跳机制原理
  5. 谈谈SQL Server高可用的常见问题
  6. 小规模流处理kata。 第2部分:RxJava 1.x / 2.x
  7. Linux GCC简明教程(编写c语言程序)
  8. 阿克曼(Ackmann)函数(信息学奥赛一本通-T1163)
  9. 韩顺平HTML5教程www.gis520.com
  10. Nginx配置location及rewrite规则
  11. 在Blazor中构建数据库应用程序——第4部分——UI控件
  12. ltspice滑动变阻器在哪_NB物理创新课堂|变阻器
  13. 计算机仿真系统模型有,计算机仿真在光伏发电系统模型中的应用研究原稿(最终定稿)...
  14. 在网页中创建表格(1)
  15. word页眉设置:显示章节标题、奇偶页不同
  16. vue-cli首页加载速度慢优化vender+vue预加载
  17. Linux网络编程8——线程池模型
  18. find vba 模糊_利用VBA代码实现多重查找、模糊查找、清除值的方案
  19. C标准库头文件—ctype.h
  20. “Why Should I Trust You?”:Explaining the Predictions of Any Classifier 论文笔记

热门文章

  1. 在Excel中sumif和sumproduct的用法
  2. COMSOL纳米颗粒表面等离激元
  3. EDIUS双11嗨购节提前抢!
  4. finereport php,FineReport与Web集成
  5. 用 unity3D 探究飞机投弹问题
  6. python爬虫获取天猫店经营者资质证书(更新到2020.06.13
  7. java南方八字排盘_八字排盘示例代码
  8. PLSQL(Procedural Language/SQL)
  9. 最详细的Hadoop+Hbase+Hive完全分布式环境搭建教程(二)
  10. 输出一个G字组成的金字塔(C语言)