活动与透明背景和模糊过滤器

时间:2017-03-14 16:12:00

标签: java android android-activity transparent blur

我正在开发一个应用程序,我一度想要打开一个具有透明背景的Activity,以便我可以看到它下面的活动。这很简单,我快速解决了。但是,现在我还要添加某种模糊过滤器,以便我活动下面的活动看起来模糊不清。

我已经四处寻找并尝试了几种不同的解决方案,但没有运气,所以我试图将其添加为一个问题。有谁知道解决这个问题的好方法?

由于

2 个答案:

答案 0 :(得分:0)

有很多图书馆可以做到这一点。 Here's一个列表。我个人使用BlurView(我希望链接到其中一个库不违反网站规则)但我必须修改一下库,请参阅this issue - 拉请求不在然而。我也有动画的性能问题。

基本上所有的库都做同样的事情:

  • 为位图创建画布,缩小尺寸(例如缩小4倍),设置转换矩阵以应用此缩放
  • 将窗口的背景渲染为Canvas
  • 将活动的根视图渲染到画布
  • 使用ScriptIntrinsicBlur
  • 模糊Canvas的位图
  • 将位图绘制为视图的背景,按比例缩小,例如4次

为什么缩放?出于性能原因。将所有内容缩小4倍会更快,并且由于升级,模糊效果也变得“更强” - 限制ScriptIntrinsicBlur可以在一次通过时模糊多少,并且多次通过会使事情再次减慢。

答案 1 :(得分:0)

对于API< 14,你可以使用标志WindowManager.LayoutParams.FLAG_BLUR_BEHIND。 对于更高的APIS,不再支持。

但是,您可以使用视图执行此操作。

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