Android Blur效果之FastBlur

来源:互联网 发布:乐乎青年城市社区吧 编辑:程序博客网 时间:2024/05/02 04:27


自从iOS系统引入了Blur效果,也就是所谓的毛玻璃、模糊化效果,磨砂效果,各大系统就开始竞相模仿,这是一个怎样的效果呢,这是我仿写的blur效果的背景图:


FastBlur

因为我们知道,这种模糊处理的过程也就是像素处理而已,所以我们可以尝试着手动进行模糊操作。幸运的是,Java上已经有了很多实现模糊处理方案的例子。我们唯一要做的就是找到一个相对快速的实现方案。


如何在程序中使用呢,也很简单:

我们过一遍这个代码:

  • scaleFactor提供了需要缩小的等级,在代码中我把bitmap的尺寸缩小到原图的1/8。因为这个bitmap在模糊处理时会先被缩小然后再放大,所以在我的模糊算法中就不用radius这个参数了,所以把它设成2。
  • 接着需要创建bitmap,这个bitmap比最后需要的小八倍。
  • 请注意我给Paint提供了FILTER_BITMAP_FLAG标示,这样的话在处理bitmap缩放的时候,就可以达到双缓冲的效果,模糊处理的过程就更加顺畅了。
  • 接下来和之前一样进行模糊处理操作,这次的图片小了很多,幅度也降低了很多,所以模糊过程非常快。
  • 把模糊处理后的图片作为背景,它会自动进行放大操作的。


为什么我们要在addOnPreDrawListener中来调用blur方法呢,这样做是为了能够在onCreate中获取控件尺寸,通过scaleFactor和radius两个参数,我们来控制Blur的程度。

如果我们要做某一部分的Blur效果,一般是将这部分图片裁减下来,然后Blur后设给某个控件的背景


本文参考自http://www.2cto.com/kf/201410/341596.html


0 0
原创粉丝点击