Android 三行代碼實(shí)現(xiàn)高斯模糊效果
前言
設(shè)計(jì):有了毛玻璃效果,產(chǎn)品的逼格直接拉滿了呀
我:啊,對(duì)對(duì)對(duì)。我去 GayHub 上找找有沒(méi)有好的解決方案吧
設(shè)計(jì):GayHub ???
可行的方案
要實(shí)現(xiàn)高斯模糊的方式有很多,StackBlur、RenderScript、Glide 等等都是不錯(cuò)的方式,但最簡(jiǎn)單直接效率最高的方式,還得是上 Github。
搜索的關(guān)鍵詞為 android blur,可以看到有兩個(gè)庫(kù)是比較合適的, Blurry 和 BlurView。 這兩個(gè)庫(kù) Star 數(shù)比較高,并且也還在維護(hù)著。
于是,便嘗試了一番,發(fā)現(xiàn) BlurView 比 Blurry 更好用,十分推薦上手 BlurView。

Blurry
優(yōu)點(diǎn):API 使用非常簡(jiǎn)潔,效果也不錯(cuò),提供同步和異步加載的解決方案
缺點(diǎn):奇奇怪怪的 Bug 非常多,并且只能作用于 ImageView
BlurView(推薦)
- 優(yōu)點(diǎn):使用的過(guò)程中幾乎沒(méi)有遇到 bug,實(shí)現(xiàn)時(shí)調(diào)用的代碼較少。并且,可以實(shí)現(xiàn)復(fù)雜的模糊 View
- 缺點(diǎn):需要在 xml 中配置,并且需要花幾秒鐘的時(shí)間理解一下 rootView 的概念
使用方式:
XML:
<androidx.constraintlayout.widget.ConstraintLayout ?... ?android:id="@+id/rootView" ?android:background="@color/purple_200" > ? ?<ImageView ? ?... ? ?android:id="@+id/imageView" /> ? ?<eightbitlab.com.blurview.BlurView ? ?... ? ?android:id="@+id/blurView" /> ? </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity#onCreate:
// 這里的 rootView,只要是 blurView 的任意一個(gè)父 View 即可 val rootView = findViewById<ConstraintLayout>(R.id.rootView) val blurView = findViewById<BlurView>(R.id.blurView) blurView.setupWith(rootView, RenderScriptBlur(this))
實(shí)現(xiàn)的效果:
使用前:

使用后:

Tips :
- 在 BlurView 以下的 View 都會(huì)有高斯模糊的效果
- rootView 可以選擇離 BlurView 最近的 ViewGroup
.setBlurRadius()可以用來(lái)設(shè)置卷積核的大小,默認(rèn)是 16F.setOverlayColor()可以用來(lái)設(shè)置高斯模糊覆蓋的顏色值
例如如下參數(shù)配置時(shí)可以達(dá)到這樣的效果:
blurView.setupWith(rootView, RenderScriptBlur(this))
? ? ? ? ? .setBlurRadius(5F)
? ? ? ? ? .setOverlayColor(Color.parseColor("#77000000"))
最后,再補(bǔ)充一下滑動(dòng)時(shí)的效果:

到此這篇關(guān)于Android 三行代碼實(shí)現(xiàn)高斯模糊效果的文章就介紹到這了,更多相關(guān)Android高斯模糊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android編程實(shí)現(xiàn)通過(guò)反射獲取資源Id的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)通過(guò)反射獲取資源Id的方法,結(jié)合實(shí)例形式分析了Android反射機(jī)制操作資源的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
Android編程實(shí)現(xiàn)自定義Tab選項(xiàng)卡功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義Tab選項(xiàng)卡功能,結(jié)合完整實(shí)例形式分析了Android自定義tab選項(xiàng)卡的遍歷、設(shè)置及屬性操作相關(guān)技巧,需要的朋友可以參考下2017-02-02
Kotlin+buildSrc更好的管理Gradle依賴譯文
這篇文章主要為大家介紹了Kotlin+buildSrc更好的管理Gradle依賴譯文及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android ContentProvider獲取手機(jī)聯(lián)系人實(shí)例
這篇文章主要介紹了Android ContentProvider獲取手機(jī)聯(lián)系人實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
android自定義控件ImageView實(shí)現(xiàn)圓形圖片
這篇文章主要為大家詳細(xì)介紹了android自定義控件ImageView實(shí)現(xiàn)圓形圖片,適用于用戶頭像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android使用音頻信息繪制動(dòng)態(tài)波紋
這篇文章主要介紹了Android使用音頻信息繪制動(dòng)態(tài)波紋 的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android實(shí)現(xiàn)簡(jiǎn)易計(jì)步器功能隔天步數(shù)清零查看歷史運(yùn)動(dòng)紀(jì)錄
這篇文章主要介紹了Android實(shí)現(xiàn)簡(jiǎn)易計(jì)步器功能隔天步數(shù)清零查看歷史運(yùn)動(dòng)紀(jì)錄,需要的朋友可以參考下2017-06-06

