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

ShapeBlurView

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

需求示例

大家熟悉的Android常用圖片加載庫,比如Glide 可以對圖片進行毛玻璃效果的加載(實現不展開說了)
但是都是對整個要加載的圖片進行高斯模糊效果,對應局部這種比較難處理,這個庫就能實現這樣的效果。
當然,你對整個圖片蓋一層,也能達到Glide高斯模糊加載的效果。
先看看效果:

效果示例
效果示例

網上有其他大神開源的庫,但都有些美中不足。沒有邊框、沒有切圓角等功能。

ShapeBlurView庫支持矩形、圓形、橢圓;邊框、邊框自定義顏色、自定義邊框粗細;矩形時支持切圓角
并且可以支持對4個角分別切圓角。


使用步驟

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

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

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

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

appcompat:***根據你自己的版本添加

使用說明

(1)Xml布局文件中引用

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

默認效果代碼如上,當然width、height根據需求而定

(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:采樣參數
blur_overlay_color:毛玻璃覆蓋顏色
blur_corner_radius:矩形時圓角半徑(4個角一樣),其他幾個corner屬性大家應該能看懂
blur_border_width:邊框線條寬度
blur_border_color:邊框線條顏色
blur_mode:樣式,rectangle:矩形;circle:圓形;oval:橢圓

(3)代碼中對熟悉進行設置

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

調用類方法refreshView,使用簡潔build模式進行值設置,最終只調用一次invalidate()
這樣避免傳統的setXXX方法里面設置一個值就去調用invalidate()進行重繪

(4)混淆

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

(5)項目開源地址

GitHub地址

高斯模糊效果參考RealtimeBlurView庫,感謝:RealtimeBlurView

項目庫如有不足和錯誤的地方,歡迎大家討論指正!覺得不錯,也希望大家幫忙Star下,感謝!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容