2017-03-14 46 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,这不再受支持。

但是,你可以用视图做到这一点。

从你的活动的整体布局创建一个位图,并用你想要的任何方法模糊该位图。在布局中添加(或取消隐藏)视图,以覆盖所有内容,并解决问题。