實時毛玻璃效果—實時高斯模糊


前面保存了一篇隨筆,是說怎么實現毛玻璃的效果,實際上就是取得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