Android模糊动态/滚动内容

时间:2016-02-02 09:08:52

标签: java android blur renderscript

我需要帮助实施模糊解决方案才能完成以下任务:

  1. 我有一个ScrollView匹配整个活动,带有动态内容:内容可以添加,动画,删除等;
  2. 我有一个标题隐藏内容,因为它会被屏幕顶部滚动
  3. 标题实际上是一个模糊传入内容然后从屏幕上消失的内容。

    我尝试使用许多库,例如Stackblurpaveldudka's blurring,最后500px own library

    其中一些失败(要么没有模糊,要么没有预期的结果),我仍然试图找出原因...... 所有这些都使用相同的技术Android RenderScript Library

    主要问题是这些库提供了一次性渲染。意思是,他们的模糊一次就是这样。它非常适合固定的背景/内容。

    500px库最接近我要找的内容:

    1. 他们的演示展示了一个带有动画图像和中间模糊方块的屏幕;
    2. 如果所述图像在所述模糊方块下通过,则它们变得模糊,动态
    3. 查看代码时,模糊将在动画侦听器的更新方法中重新呈现。这是非常昂贵的,我想知道它是否可行。

1 个答案:

答案 0 :(得分:0)

如果您没有找到任何足够的解决方案,我将添加如何模糊我的整个屏幕,这应该是使用RS执行此操作的最快捷方式:

private static final float BITMAP_SCALE = 0.05f;
private static final float BLUR_RADIUS = 8.0f;

    private Bitmap blurImage (Bitmap input) {
        if (input == null){
            return null;
        }

        int width = Math.round(input.getWidth() * BITMAP_SCALE);
        int height = Math.round(input.getHeight() * BITMAP_SCALE);

        Bitmap inputBitmap = Bitmap.createScaledBitmap(input, width, height, false);
        Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

        ScriptIntrinsicBlur theIntrinsic = null;

        theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
        Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
        Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
        theIntrinsic.setRadius(BLUR_RADIUS);
        theIntrinsic.setInput(tmpIn);
        theIntrinsic.forEach(tmpOut);
        tmpOut.copyTo(outputBitmap);

        return outputBitmap;
    }