更新记录
1.0.0(2024-10-05) 下载此版本
- 初次发布
平台兼容性
uni-app x(5.23)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | 6.0 | 13 | 5.0.0 | × |
文档
sn-e-blurview 是 SinleUI 框架的高斯模糊组件。
SinleUI 框架实现高斯模糊/毛玻璃效果的组件都依赖此插件。
一、实现机制(按平台/引擎/版本条件编译)
| 场景 | 实现 |
|---|---|
| 非 APP 端(Web / iOS 等) | 直接使用 CSS backdrop-filter: blur(radius) |
| Android · 非蒸汽模式(VDOM) | com.eightbitlab:blurview + RenderScriptBlur,逐帧抓取 decorView 做模糊 |
Android · 蒸汽模式(Vapor),uniVersion < 5.25 |
不写任何原生代码,仅提供普通 view(退化为普通容器) |
Android · 蒸汽模式(Vapor),uniVersion >= 5.25 |
直接使用 CSS backdrop-filter: blur(radius) |
判定依据:组件通过
#ifdef APP-ANDROID、#ifndef/#ifdef VUE3-VAPOR与版本条件编译uniVersion组合,在编译期确定采用哪条实现,运行时零开销。blur-radius默认值为15(radiusprop,单位 px)。
二、为什么这样设计
1. 优先使用 CSS backdrop-filter(最轻量、零依赖、跨端一致)
- uni-app x 中非 APP 端、以及蒸汽模式 5.25 起均已原生支持
backdrop-filter。 - 支持时就只渲染一个带插槽的普通
view并在样式中声明模糊,用起来和普通 view 一样,无任何第三方依赖、无需自定义基座。
2. 蒸汽模式 uniVersion < 5.25 退化为普通 view,而非原生方案
- 早期 vapor 尚不支持
backdrop-filter。 - 但若在 vapor 下强行使用
com.eightbitlab:blurview,三库会用它自己的软件 Canvas 对decorView逐帧采样,而 vapor 的内容是硬件 RenderNode, 软件画布无法执行Canvas.drawRenderNode(...),会直接抛Software rendering doesn't support drawRenderNode并导致 App 崩溃(实测)。 - 因此在 vapor <5.25 时不引入原生代码,仅提供普通 view,把「是否补充毛玻璃」交由使用方在业务层自行权衡(例如用半透明遮罩临时代替),避免任何崩溃风险。
3. 仅 VDOM 非蒸汽模式使用原生 blurview
- VDOM 的视图树可被该库的软件采样兼容,是历史上验证过能正常工作的路径,故保留
blurview + RenderScriptBlur实现真实毛玻璃。
4. 版本可平滑演进
- 升级到 HBuilderX Alpha 5.25+ 后,同一份代码会自动切换到 CSS
backdrop-filter,无需改动任何业务使用方式。
注意:Android 上只有「VDOM 非蒸汽」分支依赖
com.eightbitlab:blurview,该分支运行需满足该依赖,故支持此分支的工程需打包自定义基座。

收藏人数:
下载插件并导入HBuilderX
赞赏(1)
下载 1711
赞赏 1
下载 12651122
赞赏 1953
赞赏
京公网安备:11010802035340号