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

本文介绍了如何在Android中实现数字变化的动画特效,通过分析动画效果,将数字拆分为数组并逐个处理。在绘制过程中,利用ValueAnimator控制数字的移动和透明度变化,实现数字从个位开始变化,递增位数一同移动的滚动效果。详细代码展示了数字滚动的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// __________________________________________________

// | _ |

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

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

// | _/ |

// | ~~** 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<>();

//老数字拆分成的数组

private List flipOutterNumbers = new ArrayList<>();

拆分数字成为数组

String flipNumberString = String.valueOf(mFlipNumber);

for (int i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值