实时毛玻璃效果—实时高斯模糊


前面保存了一篇随笔,是说怎么实现毛玻璃的效果,实际上就是取得view的缓存图片,经过模糊处理后,在显示出来。

这样写没有问题,但是想做到实时的效果根本不可能,由此证明自己写的代码和开源代码的差距。

下面介绍一下开源空间RealTimeBlurView,这个使用起来就非常简单,容易了。 

底层实现是自定义控件取得背景图片自己通过canvas画出来的,

实现了 ViewTreeObserver.OnPreDrawListener View的这个接口:此接口是系统要绘制视图树的时候调用的方法。

当系统要开始绘制视图树,说明视图已经改变,这样就做到了实时更新,接下来要做的就是虚化,然后drawCanvas(bitmap),更新invalidate();

把这个自定义控件,放到我们的布局中去就可以了。如果布局上需要添加空间,把它放在最下层,这样背景就是虚化的了。

<com.github.mmin18.widget.RealtimeBlurView
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	app:realtimeBlurRadius="20dp"              //这个自定义属性代表虚化程度 50 最高,0 最低
	app:realtimeOverlayColor="#8000" />            //这个属性不变就ok了,是一个8透明度的透明色

java代码中,如果不需要设置点击事件等属性的话,就不需要做任何操作。

在app中的build.gradle中

添加依赖   compile 'com.github.mmin18:realtimeblurview:1.1.0'
添加渲染支持     android {

              buildToolsVersion '24.0.2' // Use 23.0.3 or higher

            defaultConfig {

              minSdkVersion 15

               renderscriptTargetApi 19                       //渲染的目标Api   一定要加

              renderscriptSupportModeEnabled true // Enable RS support      //开启渲染模式支持  一定要加

           }


防止被混淆 在混淆文件中加上  -keep class android.support.v8.renderscript.** { *; }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM