導航:首頁 > 操作系統 > android圖像模糊

android圖像模糊

發布時間:2025-04-04 12:18:52

1. android13 FLAG_BLUR_BEHIND 壁紙高斯模糊,毛玻璃背景方案設計-千里馬framework實戰

高斯模糊在Android13中的實現,特別是FLAG_BLUR_BEHIND這一特性,為開發者提供了在不同場景下實現美觀與交互提升的途徑。此特性主要應用於狀態欄下拉時展示桌面畫面作為背景,並通過高斯模糊效果使其更加吸引人,與主要焦點形成對比。

實現方案通常分為兩種。第一種為傳統的截圖方法,通過截取背景圖像,應用高斯模糊處理,再將處理後的圖像作為背景展示。此方法操作簡單,靈活性大,但無法實現實時模糊,且修改邏輯較多。

第二種方案則是Android新版本提供的直接設置窗口屬性的方法,通過設置FLAG_BLUR_BEHIND,讓其後的窗口層實現實時的高斯模糊效果。此方法由系統底層提供,操作簡便,無需額外處理,能實現實時模糊。然而,此方法僅適用於對窗口下方的元素進行模糊處理,可能導致窗口切換時出現bug。

具體使用FLAG_BLUR_BEHIND,可以通過設置Window的LayoutParams來實現。同時,還提供了setBlurBehindRadius方法來調整模糊程度,其中mBlurBehindRadius越大,模糊效果越明顯。通過對比模糊前後的圖像效果,可以直觀地感受到高斯模糊帶來的美學提升。

在Android框架中,FLAG_BLUR_BEHIND特性的實現與SurfaceFlinger組件緊密相關。當應用此特性後,最後在WindowState中會進行讀取和相關業務處理,最終通過SurfaceFlinger對圖像進行實際的高斯模糊操作。在這一過程中,關鍵的步驟包括讀取dimmer狀態和根據該狀態進行圖像處理。進一步地,SurfaceFlinger對圖層結構的調整,使得實時模糊效果得以實現。

2. Android上如何做出毛玻璃模糊的效果

上圖展示了一種很典型的視覺效果——文字的背景不再是固定的,而是將底層的相應區域模糊化,好似蓋了一層毛玻璃。

其原理也很簡單,分為三步走:

裡面涉及到的技術點有兩個:

ViewTreeObserver裡面有一個監聽器為OnPreDrawListener

當它執行時,布局文件經過了 measured laid out displayed ,即將被繪制到屏幕,此時調用它的 getDrawingCache() 方法可以獲得其Bitmap。完整方法如下:

方案有兩種:

兩種方案都可以進行對Bitmap對象的模糊處理,但當模糊半徑增大時,StackBlur能夠保持較好的性能,且不受Renderscript半徑25px的限制。

在GitHub項目有一個項目 blurring ,其實現了StackBlur演算法的Java實現版FastBlur,並給出兩種方案效率對比demo。經過測試,

看起來,Renderscript的性能更好,應該是Android上對Renderscript做了優化。盡管如此,考慮到Android中渲染一幀的時間應該不超過16ms(60fps),這樣的性能並不友好。 blurring 作者想出了另外一種思路:

這時候,效率提升非常明顯:

生成的模糊圖片當然有所不同,但是都是模糊背景,所以對用戶而言沒有太大差別。

好了,至此Android上製作毛玻璃背景模糊效果的技術都確定了。

我在 blurring 基礎上做了封裝,介面如下:

相對應類有兩個:

3. android 網路獲取圖片從模糊到清晰

那個模糊的是先載入了一張解析度小的預覽圖,然後當你點開那張預覽圖後,後台回去請求伺服器,下載高解析度的圖片,完成後刷新imageView,就變清晰了。

閱讀全文

與android圖像模糊相關的資料

熱點內容
吶喊魯迅pdf 瀏覽:279
數據分析師vs程序員 瀏覽:364
pdf版本下載 瀏覽:963
python列表倒置 瀏覽:606
陰線埋伏指標源碼 瀏覽:127
定時休眠命令 瀏覽:743
航海王熱血伺服器為什麼是灰色的 瀏覽:114
不在域內的伺服器如何與域用戶共享文件夾 瀏覽:24
轉轉app裡面有什麼 瀏覽:980
玄學魏晉pdf 瀏覽:642
程序員面試有幫助嗎 瀏覽:148
平板怎麼使用安卓系統 瀏覽:573
程序員慘 瀏覽:772
直接生成頁面貼入源碼js不執行 瀏覽:491
嗨嗨直播app怎麼直播 瀏覽:87
卻連接不了伺服器怎麼搞 瀏覽:87
老別克壓縮機 瀏覽:582
如何查找軟體的加密數據文件 瀏覽:978
程序員同學級別 瀏覽:81
手機加密視頻播放不了 瀏覽:650