在android中使用像ios一样的色调(像深灰色)模糊图像效果

时间:2017-10-13 07:00:19

标签: android

当对话框打开时,我如何创建像ios一样的效果背景屏幕变得模糊以及在android中使用色调。

我按照这些链接获得此效果,但无法获得这样的效果。

http://android-er.blogspot.in/2013/08/merge-two-image-overlap-with-alpha.html

对于模糊效果,我会截取当前视图的屏幕截图并模糊该图像。

但我需要在演示图像中使用色彩效果。

我想要的效果是图片。我是如何得到这种效果的?

演示图像(带颜色阴影的模糊)

提前谢谢。

3 个答案:

答案 0 :(得分:0)

使用以下类

public class BlurBuilder {
    private static final float BITMAP_SCALE = 0.05f;
    private static final float BLUR_RADIUS = 7.5f;

    public static Bitmap blur(Context context, Bitmap image) {
        int width = Math.round(image.getWidth() * BITMAP_SCALE);
        int height = Math.round(image.getHeight() * BITMAP_SCALE);

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

        RenderScript rs = RenderScript.create(context);
        ScriptIntrinsicBlur 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;
    }
}

也可以在您需要的地方使用,如下所示:

Bitmap blurredBitmap = BlurBuilder.blur(mContext, icn);
rootlay.setBackgroundDrawable(new BitmapDrawable(getResources(), blurredBitmap));

答案 1 :(得分:0)

使用ColorFilter。 以下代码取自Blurry

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

//...omitted...

Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG);

//replace factor.color with your desired color, e.g Color.argb(200,200,200,200)
PorterDuffColorFilter filter =
    new PorterDuffColorFilter(factor.color, PorterDuff.Mode.SRC_ATOP);
paint.setColorFilter(filter);
canvas.drawBitmap(source, 0, 0, paint);

//blur
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
  try {
    bitmap = Blur.rs(context, bitmap, factor.radius);
  } catch (RSRuntimeException e) {
    bitmap = Blur.stack(bitmap, factor.radius, true);
  }
} else {
  bitmap = Blur.stack(bitmap, factor.radius, true);
}

//...omitted...

答案 2 :(得分:0)

使用任何方法来模糊图像。您可以找到各种类型的库来实现。

我用过Blur Image View

当图像模糊时,您只需要添加一行即可。

BlurImageView.setColorFilter(Color.argb(155, 0, 0, 0), PorterDuff.Mode.SRC_ATOP);

这将使您的图像视图变暗 根据需要更改Color.argb的参数