Android高斯模糊(毛玻璃效果)蒙層庫(kù)-ShapeBlurView

ShapeBlurView

ShapeBlurView庫(kù)是一個(gè)高斯模糊(毛玻璃效果)蒙層庫(kù)。Like iOS UIVisualEffectView
不知大家做需求的時(shí)候是否有這樣的效果要求:

需求示例

大家熟悉的Android常用圖片加載庫(kù),比如Glide 可以對(duì)圖片進(jìn)行毛玻璃效果的加載(實(shí)現(xiàn)不展開(kāi)說(shuō)了)
但是都是對(duì)整個(gè)要加載的圖片進(jìn)行高斯模糊效果,對(duì)應(yīng)局部這種比較難處理,這個(gè)庫(kù)就能實(shí)現(xiàn)這樣的效果。
當(dāng)然,你對(duì)整個(gè)圖片蓋一層,也能達(dá)到Glide高斯模糊加載的效果。
先看看效果:

效果示例
效果示例

網(wǎng)上有其他大神開(kāi)源的庫(kù),但都有些美中不足。沒(méi)有邊框、沒(méi)有切圓角等功能。

ShapeBlurView庫(kù)支持矩形、圓形、橢圓;邊框、邊框自定義顏色、自定義邊框粗細(xì);矩形時(shí)支持切圓角
并且可以支持對(duì)4個(gè)角分別切圓角。


使用步驟

1、在添加maven地址的地方添加:

    repositories {
        maven { url 'https://jitpack.io' }
    }

2、在需要使用的gradle文件添加依賴:

implementation 'com.github.centerzx:ShapeBlurView:1.0.5'
implementation 'androidx.appcompat:appcompat:***'

appcompat:***根據(jù)你自己的版本添加

使用說(shuō)明

(1)Xml布局文件中引用

            <net.center.blurview.ShapeBlurView
                android:id="@+id/blurview"
                android:layout_width="300dp"
                android:layout_height="100dp" />

默認(rèn)效果代碼如上,當(dāng)然width、height根據(jù)需求而定

(2)可用屬性

        <attr format="dimension" name="blur_radius"/>
        <attr format="float" name="blur_down_sample"/>
        <attr format="color" name="blur_overlay_color"/>
        <attr format="dimension" name="blur_corner_radius"/>
        <attr format="dimension" name="blur_corner_radius_top_left"/>
        <attr format="dimension" name="blur_corner_radius_top_right"/>
        <attr format="dimension" name="blur_corner_radius_bottom_left"/>
        <attr format="dimension" name="blur_corner_radius_bottom_right"/>
        <attr format="dimension" name="blur_border_width"/>
        <attr format="color" name="blur_border_color"/>
        <attr name="blur_mode">
            <enum name="rectangle" value="0"/>
            <enum name="circle" value="1"/>
            <enum name="oval" value="2"/>
        </attr>
blur_radius:高斯模糊半徑,值越大越模糊,0<r<=25
blur_down_sample:采樣參數(shù)
blur_overlay_color:毛玻璃覆蓋顏色
blur_corner_radius:矩形時(shí)圓角半徑(4個(gè)角一樣),其他幾個(gè)corner屬性大家應(yīng)該能看懂
blur_border_width:邊框線條寬度
blur_border_color:邊框線條顏色
blur_mode:樣式,rectangle:矩形;circle:圓形;oval:橢圓

(3)代碼中對(duì)熟悉進(jìn)行設(shè)置

        blurview?.refreshView(
            ShapeBlurView.build().setBlurMode(BlurMode.MODE_RECTANGLE)
                .setCornerRadius(BlurCorner.TOP_LEFT, 50f).setBorderWidth(10f)
                .setBorderColor(
                    R.color.teal_200
                )
        )

調(diào)用類方法refreshView,使用簡(jiǎn)潔build模式進(jìn)行值設(shè)置,最終只調(diào)用一次invalidate()
這樣避免傳統(tǒng)的setXXX方法里面設(shè)置一個(gè)值就去調(diào)用invalidate()進(jìn)行重繪

(4)混淆

-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }

(5)項(xiàng)目開(kāi)源地址

GitHub地址

高斯模糊效果參考RealtimeBlurView庫(kù),感謝:RealtimeBlurView

項(xiàng)目庫(kù)如有不足和錯(cuò)誤的地方,歡迎大家討論指正!覺(jué)得不錯(cuò),也希望大家?guī)兔tar下,感謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容