如何在Android中复制iOS 7 Blur View

Chi*_*hod 11 android ios

我喜欢iOS 7用于他们的NotificationMusic popover 的风格,如下所示.

在此输入图像描述

所以,我尝试在Android中实现这个功能.在做了一些搜索后,我实现了如何做到这一点.我试过的是跟随.

1)首先,我使用View的根参考,并使用getDrawingCache()View的功能拍摄它.

linearLayout.buildDrawingCache();
SoftReference<Bitmap> bitmap = new SoftReference<Bitmap>(
            Bitmap.createBitmap(linearLayout.getDrawingCache()));
linearLayout.destroyDrawingCache();
Run Code Online (Sandbox Code Playgroud)

2)我取相对于其父项的位置,并根据要求剪切图像.

SoftReference<Bitmap> temp = new SoftReference<Bitmap>(
            Bitmap.createBitmap(bitmap.get(), 0,
                    (parentHeight - childHeight), childWidth, childHeight));
Run Code Online (Sandbox Code Playgroud)

3)我用一些算法使位图图像模糊.(我使用Fast Bitmap Blur For Android SDK fastBlur效果)

4)在叠加视图中设置它.

imageView1.setImageBitmap(Utils.fastblur(temp.get(), 8));
Run Code Online (Sandbox Code Playgroud)

但我的问题是需要时间来拍摄然后给出模糊效果并切割图像然后我得到了最终结果.虽然iOS具有非常快速的模糊过程,例如当抽屉从底部进入时,它会立即模糊背后的屏幕.

有没有其他方法可以实现这一目标?因为使用我的场景,我不能每隔一秒拍摄一次屏幕,并且在抽屉的每一次移动中每秒都进行1到4次处理.

Stu*_*tus 1

好吧,如果我正确理解你的问题是,你有一个抽屉机制,你需要更新抽屉移动的每个像素的模糊图像?

那么问题的解决方案是模糊屏幕一次,并使用该图像与一些奇特的算法一起显示/隐藏和定位该图像,这样抽屉似乎会立即模糊,但实际上发生的是图像已经生成了。您只需显示更多或更少的图像即可创建效果。

不知道我是否有道理,或者我是否理解你的问题。