以动画实现 水波纹扩散效果.

今天在看到这一系列的博文:
http://blog.csdn.net/harvic880925/article/details/50546884
http://blog.csdn.net/harvic880925/article/details/50549385
看到这2篇,准备动手实践一下.

那个变大的圈,动画很眼熟对不对…
瞬间想到 网易云音乐那个听歌识曲的那个圈(此条5毛).
准备就着学习的知识,弄一个看看…

网易云音乐听歌识曲的效果自行打开APP看,
额.我弄完加了特技的效果是这样的:
这里写图片描述

这个效果就是按照博文内的介绍,只不过加了3个特技,分别是颜色渐变和透明度渐变,还有最重要的叠加.

主要是说下实现这个效果的过程,至于圈变大,圈变色这个,我就不再赘述,自行看引用的博文.


实现过程:
  1. 颜色渐变好处理,直接ValueAnimator.ofArgb(int color…)
  2. 透明度渐变也好处理,tween Animation里面的AlphaAnimation就行,不再赘述.
  3. 最主要的是叠加这个效果,最开始想实现这个效果,想到的第一个想法是自定义Evaluator,自定义3个或者更多的Evaluator,通过重写这个方法:
@Override  
    public Integer evaluate(float fraction, Integer startValue, Integer endValue) {  
        return (int) (endValue - fraction * (endValue - startInt));  
    }  

修改return的返回值,自行添加偏移量,每个自定义的Evaluator添加不同的偏移量来达到这种渐变叠加的效果,最后发现,too young…毕竟每个圆都是从中心开始扩散,而不是一段一段的那种.

最后想到的办法是使用framelayout,多弄几个这个圆,重叠起来,
每个都执行 颜色渐变,透明度渐变动画,
然后以不同的延时开启动画,完美的错开.
emmmmmmmmm…
然后确定完整执行动画的时间,根据重叠的个数,然后执行延时动画即可.
如叠加了4层.完整执行动画4秒,就分别延时0,1,2,3秒.
这样就能完美错开,达到一种水波纹的效果.

待填坑….

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值