码迷,mamicode.com
首页 > 移动开发 > 详细

Android--波浪

时间:2015-11-15 16:07:21      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

https://github.com/traex/RippleEffect

http://www.cnblogs.com/tiantianbyconan/p/4116304.html

  • rv_alpha                    即paint.setAlpha()中设定的值,就是透明度,其取值范围是0---255,数值越小,越透明,颜色上表现越淡。
  • rv_framerate             是RippleEffect波纹每次半径增加相关的一个参数,值越大,每次的半径增量越大,效果看起来也就越粗糙。
  • rv_rippleDuration   就是RippleEffect波纹的范围了,超过此范围,就不再绘制了。
  • rv_zoomDuration       为RippleEffect波纹的持续时间
  • rv_color                     为RippleEffect波纹的颜色。
  • rv_centered值为true, 则波纹的触发点为View的中心,否则为触摸点的位置。
  • rv_type                     为波纹效果的类型,simpleRipple就是最常见的那种,只产生一圈涟漪效果,doubleRipple两圈涟漪,rectangle的效果代码中没具体实现。
  • rv_zoom值为true,     会有一个缩放的效果,rv_ripplePadding为和RippleEffect波纹半径相关的一个参数,rv_zoomScale为缩放动画结束时Y坐标上的伸缩尺寸。

 

 

   在初始化的时候,animationRunning值已被置为true,主要是为了保证一次完整地波纹效果不会被打断。首先执行canvasHandler.postDelayed(runnable, frameRate);每隔frameRate的时间,执行一次invalidate()。 canvas.save()用来保存Canvas的状态,注意在绘制结束的时候调用了canvas.restore(),成对使用。然后就开始绘制波纹了,每次的半径增量为(radiusMax * (((float) 1 * frameRate) / rippleDuration),每隔rameRate绘制一次。rippleType == 1的时候,保证在绘制到一定的时候,setAlpha的值加深,形成两次涟漪,否则setAlpha值就一直递减,波纹越大效果越弱。最后当rippleDuration <= timer * frameRate的时候,就return了,RippleEffect波纹效果结束。

 

       最后在XML中直接拿来用就可以了:

 

Android--波浪

标签:

原文地址:http://www.cnblogs.com/zrui513/p/4966695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!