Android 数字变化特效,android自定义View(五)、数字滚动效果实现以及原理分析...

// __________________________________________________

// | _ |

// | /|,/ _ _ _ / ` /_ _ . _ _/_ _ _ _ _|

// |/ / /_' / / /_/ /_, / / / / _\ / / / / /_| _\ |

// | _/ |

// | ~~** kimira **~~ |

// |__________________________________________________|

//

//

// , , , , , , , , ,

// , , , .____. , , , , ,

// , , , , | :| , , , ,

// , , , __|====|__ |||||| , ,

// , , , * / o o \ ||||||, , , ,

// , , , * | -= | \====/ , , ,

// , U==\__//__. \\// , ,

// , , , , / \\==// \ \ || , , ,

// , , ,| o || | \|| , , ,

// , , , | o "" |\_|B), , , ,

// , , , \__ --__/ || , , ,

// , , , / \ ||, , , ,

// , , | | || , , ,

// , , , ,| | || , , , , ,

// ------______------\__ --_ __/__LJ________---------_

老规矩先方效果图,吸引一波火力。

ec3cc39338a954be5c255b5e98321087.gif

从效果图上可以看到,数字变化规律是数字先从个位开始变化,之前的数字向上移动一定距离,透明度变暗到不可见,新的数字从下向上移动一定距离到达正常展示区域,数字变化是从透明到不透明。如果个位数字刚好是到达9,需要位数递增,所以变化是个位+十位一起移动。

分析完动画效果后,我们在看看如何实现这种动画效果,根据之前的分析,应该可以有一定的思路处理了吧。

1、首先需要将数字进行打散,拆分成为一个数字数组,变化操作针对于数组中的单个元素操作即可,对整个数字的宽高度计算,可以将单个数字计算出来累积即可得到。

2、在数字变化的时候,可以看到变化的时候,数字滚动有一定间隔,所以控件的实际大小,应该是文字高度加上上下可移动间隔距离。

3、数字变化规律上面,如果数字个位<9,只在个位数字变化,如果出现9, 99, 999 这种操作的话,就需要对数字的递增位数也一起移动。要实现这个,可以保存一下之前的数字,两个数字的数组位数逐个比较,数字不同的位数一起移动即可。

4、让数字动起来,需要将老数字向上移动,并修改透明度,所以应该移动距离是(0—>-间隔距离),新数字向上移动,透明度从0到1,移动距离应该是(间隔距离—>0)。

好了,看看详细代码怎么实现。

//新数字拆分成的数组

private List flipNumbers = new ArrayList<>();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值