最近项目中遇到了毛玻璃效果,实现过程中在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、毛玻璃效果
方法一:

本文介绍了如何在Android项目中实现全屏的毛玻璃效果,通过获取屏幕View,将其转换为Bitmap,然后利用StackBlur算法或RenderScript的ScriptIntrinsicBlur进行模糊处理。文章提到了实现过程中的关键步骤,包括Bitmap的尺寸压缩、可变性设置以及注意的效率问题。最后,将模糊后的Bitmap转换为Drawable并应用到任意View的背景上,以达到类似iOS系统的毛玻璃视觉体验。
最低0.47元/天 解锁文章
6720





