android:如何拍摄截图并模糊呢?

时间:2011-05-08 16:20:07

标签: android

我正在尝试进行一种自定义对话,它会将之前的屏幕(镜头)作为背景,有点暗淡和模糊,好像没有焦点一样。

要做到这一点,我想,当对话框启动时,应该拍摄截图,使其变暗,模糊并作为对话的背景......

您认为最好的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

有一种方法,只是一种技巧,模糊,你可以轻松尝试。首先缩小比例尺,比如说大小的一半,然后使用过滤将其升级回原始大小。我不知道这是怎么回事。

这是使用这个想法的简短代码示例。缩放原始位图越小,它应该越“模糊”。但是基于一些实验,如果你使用这种技术使用小于一半的尺寸,它就变得非常像素化。超过我的预期。

int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, width / 2, height / 2, true);

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);

Canvas canvas = new Canvas(bitmap);

Rect scaledRect = new Rect(0, 0, scaledBitmap.getWidth(), scaledBitmap.getHeight());
Rect origRect = new Rect(0, 0, width, height);
canvas.drawBitmap(scaledBitmap, scaledRect, origRect, paint);
paint.setColor(Color.argb(80, 0, 0, 0));
canvas.drawRect(origRect, paint);

最后两行在Bitmap上绘制一个半透明的黑色覆盖,使其更暗。另外BlurMaskFilter并不是很好,因为它仅适用于alpha通道。不幸。或许我只是错过了它的用法。