安卓:如何截取屏幕截图并模糊它



我正在尝试制作一种自定义对话,它将以前的屏幕(镜头)作为背景,有点暗和模糊,好像失焦了。

为此,我想,当对话框启动时,应该截取屏幕截图,使其变暗,模糊并作为对话的背景......

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

谢谢!

有一种方法,只是一个技巧,用于模糊,你可以很容易地尝试。首先将位图缩小到一半大小,然后使用筛选将其放大回原始大小。我不知道结果如何。

下面是使用此想法的简短代码示例。原始位图缩放得越小,它应该越"模糊"。但是根据一些实验,如果你使用小于一半的尺寸,使用这种技术,它会变得非常像素化。比我预期的要多。

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);

最后两行在位图上绘制一个半透明的黑色叠加层,使其更暗。此外,BlurMaskFilter也不是什么好方法,因为它仅适用于alpha通道。不幸。或者也许我只是错过了它的使用。

最新更新