背景毛玻璃效果

-webkit-backdrop-filter:saturate(100%) blur(6px);
backdrop-filter:saturate(100%) blur(6px);
在安卓中实现背景毛玻璃效果可以通过以下几种方法: ### 自定义方法 可以通过自定义方法实现,主要步骤为获取背景图片的 `Bitmap` ,对其进行模糊处理,再将处理后的 `Bitmap` 转为 `Drawable` 类型并设置为背景。示例代码如下: ```java private void setBlurBackground(Bitmap bmp) { final Bitmap blurBmp = BlurUtil.fastblur(ParentCircleInfoActivity.this, bmp, 10); // 0 - 25,表示模糊值 final Drawable drawable = ImageUtil.getDrawable(this, blurBmp); // 将bitmap类型图片 转为 Drawable类型 mRLHead.post(new Runnable() { // 调用UI线程 @Override public void run() { mRLHead.setBackgroundDrawable(drawable); } }); } ``` 上述代码中,`BlurUtil.fastblur` 方法用于对图片进行模糊处理,`ImageUtil.getDrawable` 方法用于将 `Bitmap` 转换为 `Drawable` 类型,最后在 `UI` 线程中设置背景[^1]。 ### 分步处理方法 还可以采用分步处理的方式实现,步骤如下: 1. 获取 `srcImage` 图片并设置为背景。 2. 将 `srcImage` 图片虚化完成后返回 `Bitmap` 类。 3. 将 `Bitmap`(虚化的背景图片)剪裁一块出来。 4. 将剪裁出来的一块虚化背景图片设置在 `srcImage` 背景上对应的位置。 示例代码如下: ```java // 将srcImage缩放成屏幕大小的图片 bmp = Bitmap.createScaledBitmap(bmp, Blur.getScreenWidth(this), Blur.getScreenHeight(this), false); // 将srcImage缩放成屏幕大小的图片 虚化 bmp = Blur.fastblur(getApplication(), bmp, 12); // 将虚化后的图片剪裁出一个矩形 bmp = Blur.clipImage(bmp, 0, 0, bmp.getWidth(), 200); ``` 上述代码中,`Bitmap.createScaledBitmap` 用于缩放图片,`Blur.fastblur` 用于对图片进行虚化处理,`Blur.clipImage` 用于剪裁图片[^2]。 ### RenderScript 方法 使用 `RenderScript` 实现高斯模糊效果,步骤为:初始化一个 `RenderScript Context`,至少创建一个 `Allocation` 对象用于存储需要处理的数据,创建 `compute kernel` 的实例(本例中是内置的 `ScriptIntrinsicBlur` 对象),设置 `ScriptIntrinsicBlur` 实例的相关属性(包括 `Allocation`、`radius` 等),开始 `blur` 操作(对应 `forEach`),将 `blur` 后的结果拷贝回 `bitmap` 中。当 `ImageView` 开始加载背景图时,取出它的 `drawableCache`,进行 `blur` 处理,`Gaussian blur` 的主要逻辑在 `blur` 函数中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值