最近项目中遇到了毛玻璃效果,实现过程中在github上查了很多代码。
看过一些方法的实现,大多都是需要一张图片,一个ImageView。
由于项目的限制,我需要像苹果系统那样,把整个屏幕都变成毛玻璃效果,因此筛选之后实现了
整理一下逻辑:
1、获取屏幕View
2、将View转换为Bitmap
private Bitmap view2Bitmap(View v) {
int w = v.getWidth();
int h = v.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.drawColor(Color.WHITE); //如果不设置颜色,默认是透明背景
v.layout(0, 0, w, h);
v.draw(c);
return bmp;
}
3、压缩Bitmo(尺寸压缩,可选,后面作解释)
int scaledRatio = 10; //尺寸压缩比例
bmp = Bitmap.createScaledBitmap(bmp, bmp.getWidth() / scaledRatio, bmp.getHeight() / scaledRatio, false);
4、毛玻璃效果
方法一: