2017-03-14 70 views
0

我目前工作的一個應用程序,我在一個點要開,有一個透明背景,這樣我可以看到它下面的活動的活動。這很簡單,我很快就解決了。但是,現在我還想添加某種模糊濾鏡,以便我的活動下面的活動似乎模糊不清。活動與透明的背景和模糊過濾

找遍四周,嘗試了幾種不同的解決方案,但沒有運氣,所以我想添加爲一個問題。有誰知道有什麼好辦法來解決這個問題嗎?

謝謝

+0

你好JesperQV。如果我的回答對你有用,請投票。 –

回答

0

有很多這樣的庫。 Here's其中的一個列表。我個人曾經使用過BlurView(希望鏈接到圖書館之一是不反對網站規則),但我不得不打補丁庫位,見this issue - 拉請求不還。我也有動畫的性能問題。

基本上所有的庫做同樣的事情:

  • 爲位圖創建畫布,以縮小的尺寸(例如小了4倍),設置的變換矩陣來應用此縮放
  • 渲染背景窗口到畫布
  • 使用ScriptIntrinsicBlur
  • 渲染活動的根視圖到畫布
  • 模糊畫布的Bitmap繪製位圖作爲背視圖的地面,縮小了例如4倍

爲什麼比例?出於性能原因。將所有東西縮小4倍會更快,並且由於放大效果,模糊效果變得「更強」 - 每次傳球都會限制ScriptIntrinsicBlur的模糊程度,並且多次傳球會再次減慢速度。

0

對於API < 14,可以使用標記WindowManager.LayoutParams.FLAG_BLUR_BEHIND。 對於更高的APIS,這不再受支持。

但是,你可以用視圖做到這一點。

從你的活動的整體佈局創建一個位圖,並用你想要的任何方法模糊該位圖。在佈局中添加(或取消隱藏)視圖,以覆蓋所有內容,並解決問題。