这几天项目中需要模仿一下iOS版本的微博菜单弹出界面,如下图:
[img]http://dl2.iteye.com/upload/attachment/0106/9193/c74ca419-1c7c-3579-8a80-f831104e9f96.jpg[/img]
用微博的同学都知道这个效果吧,这篇文章先实现模糊效果,进入、退出动画后面文章分析;
一、说一下实现思路,很简单的:
1、截图:就是获取我们app得截图
获取我们Activity得根view即DecorView,关于DecorView,sdk里面是这么说明的:
就是说获取最顶层的window,可以添加到window manager里面;
拿到view之后可以调用view的getDrawingCache方法获取bitmap截图;
2、对图片做高斯模糊;
高斯模糊在Photoshop里面用的比较多,可以用来去痘痘。
大致原理是:对指定像素和其周围像素进行加权平均来得到最终结果,使用高斯分布作为滤波器。
这儿可以了解详细的算法原理:http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html
二、代码实现:
代码比较简单,我自己加了注释贴出来了:
我这里用了外国开源项目中的一个Java算法,地址:https://github.com/paveldudka/blurring
如果用C/C++实现jni调用,效果会高一些,可以参考:https://github.com/qiujuer/ImageBlurring/blob/master/README-ZH.md
最后来一张屌丝做demo专业效果图:
[img]http://dl2.iteye.com/upload/attachment/0106/7950/3e1cebb4-fcb4-3c6e-bd64-7a56b63187ac.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0106/7954/5a629564-9e38-34b8-ba27-4beed1b03931.png[/img]