当对话框打开时,我如何创建像ios一样的效果背景屏幕变得模糊以及在android中使用色调。
我按照这些链接获得此效果,但无法获得这样的效果。
http://android-er.blogspot.in/2013/08/merge-two-image-overlap-with-alpha.html
对于模糊效果,我会截取当前视图的屏幕截图并模糊该图像。
但我需要在演示图像中使用色彩效果。
我想要的效果是图片。我是如何得到这种效果的?
演示图像(带颜色阴影的模糊)
提前谢谢。
答案 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的参数