1. 程式人生 > >Android簡單、高效能的高斯模糊(毛玻璃)效果(附原始碼)

Android簡單、高效能的高斯模糊(毛玻璃)效果(附原始碼)

毛玻璃效果相信很多朋友都眼紅很久了,
隔壁ios系統對高斯模糊早就大範圍使用了,
咱們Android卻絲毫不為所動,
於是就只能靠廣大開發者咯。

這是目前市面上效能最高的方案,
也不知道最初是哪位大神寫的,
我也只是拿來封裝一下,
變得更簡單、更好用,
加上了陰影遮罩的效果。

先來看看效果吧,
只是有一點要說明的,
CSDN要求圖片在2M以內,
於是我就把GIF壓縮了一下,
所以大家會看到有一個一個的點點,
實際是沒有的,
效果很贊很平滑,
請放心使用。

Bamboy高斯模糊

話不多說,
下邊開啟乾貨模式。

第一步:
把我專案裡的工具類的包copy到你的專案裡
Bamboy工具類
至於每個工具類是幹什麼用的,
我自認註釋寫得比較完整,
大家夥兒可以下載下來細細研究。

第二步:
模糊圖片
很簡單,一句話:

UtilBitmap.blurImageView(this, iv_head_portrait, 25);

不難理解,
第一個引數是上下文;
第二個引數是要模糊的ImageView;
第三個引數是模糊等級,值為 0~25。

就是這麼簡單。

但是我個人認為,
最需要高斯模糊的場景應該是彈窗,
所以我特意封裝了一下彈窗的效果:

 // 獲取截圖的Bitmap
 Bitmap bitmap = UtilScreenCapture.getDrawing(this);

 if (bitmap != null) {
     // 將截圖Bitma放入ImageView
iv_popup_window_back.setImageBitmap(bitmap); // 將ImageView進行高斯模糊【25是最高模糊等級】【0x77000000是蒙上一層顏色,此引數可不填】 UtilBitmap.blurImageView(this, iv_popup_window_back, 25, 0x77000000); } else { // 獲取的Bitmap為null時,用半透明代替 iv_popup_window_back.setBackgroundColor(0x77000000); } // 開啟彈窗 UtilAnim.showToUp(rl_popup_window, iv_popup_window_back);
    這裡唯一需要注意的,
    就是「將ImageView進行高斯模糊」的那一行。
    可以發現,
    比直接模糊圖片多了個設定顏色的引數,
    其實從GIF上也能看得出來,
    彈窗的背景模糊,
    比直接模糊圖片多了層黑色遮罩,
    這個顏色引數就是做這個用的,
    這個引數傳什麼顏色,
    就會有什麼顏色的遮罩。

至此就差不多了,
歡迎大家夥兒共同探討。