更新记录
1.0.0(2024-12-04)
2024-12-14
首次发布 V1.0.0
平台兼容性
Vue2 | Vue3 |
---|---|
√ | × |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.28,Android:5.0,iOS:不确定,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
bsx-blur 适用于uniapp x的Android 端Blur处理
开发文档
UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS
实现
本插件使用Blurry库 实现兼容性的视图模糊处理功能(内部使用的是RenderScript)支持Android 5+版本,感兴趣的可以看下源库。另,Android 12+ 系统本身提供有了renderEffect 方法去处理模糊,效果也挺好的。还有就是Android提供了RenderScript函数的替代工具包RenderScript Intrinsics Replacement Toolkit ,源码的;不过,Github上有人封装了下,renderscript-toolkit 感兴趣的也可以看看。
话回此插件,本人也是小白,纯粹搬运代码成分较多!望各位大佬手下留情~
方法介绍
统一返回
{
status: string, // succeed or failed
message: string // 处理的信息
} as UTSJSONObject
函数名 | 参数 | 说明 |
---|---|---|
bsxBlurRemoveRV | duration:number=500 移出效果时的动画时长 |
用于移出 已开启应用屏幕模糊的效果 |
bsxClearViewBlur | viewId : string uvue页面内的view id |
用于清除已应用的View的模糊效果。注意!这里处理的是通过bitmap 进行的模糊直接清除Image 资源;即,若要使用此功能, 那么应用模糊效果的view必须有一个副view。避免清除正常显示的图片 |
bsxBlurScreenOverlay | radius : number = 14, sampling : number = 2, animated : number = 0, color : string = "" |
用于模糊应用当前整个屏幕(不包含终端状态栏!) radius 模糊半径【可选】,默认14 sampling 缩放大小bitmap的缩放分母即几分之一 【可选】默认2 animated 动画时间 【可选】默认0 color 参数Android 支持的颜色 #RGB / #AARRGGBB 【可选】默认空即透明。另,录入错误的字符串会默认透明处理。 |
bsxBlurFrmViewByBitmap | viewGroupId : string, imageViewId : string, ... 其他可选参数同上 |
用于通过提供的view获取bitmap 模糊应用于imageview。 参数均为uvue页面内的view id 【必填】 |
bsxBlurFrmViewToView | 同上 | 效果同上 |
bsxBlurFrmBitmapDynamic | 同上 | 效果同上;循环调用会先清除之前的bitmap资源。 可以用于某些动态的场景,例如遮罩层背景动态模糊处理, 实际上就是间断执行上面的函数。下面有使用例子介绍: |
调用示例
import { bsxBlurScreenOverlay, bsxBlurFrmViewByBitmap, bsxBlurFrmViewToView, bsxBlurFrmBitmapDynamic,
bsxClearViewBlur, bsxBlurRemoveRV } from "@/uni_modules/bsx-blur"
<view class="" style="margin-top: 20px; display: flex;flex-direction: row; justify-content: space-around;align-items: center;">
<view id="image1" class="" style="width: 45%;">
<image id="blurimage1" src="/static/写乐保介.jpg" mode="scaleToFill" style="width: 100%;"></image>
<!-- 如果想调用清除 blur 则应使用遮罩image -->
<image id="blurimageadd" mode="scaleToFill" style="position: absolute; width: 100%;"></image>
</view>
<view id="image2" class="" style="width: 45%;">
<image id="blurimage2" src="/static/写乐保介.jpg" mode="scaleToFill" style="width: 100%;"></image>
</view>
</view>
<view class="" style="margin-top: 20px;display: flex;flex-direction: row; justify-content: space-around;align-items: center;">
<view id="image3" class="" style="width: 45%;">
<image id="blurimage3" src="/static/写乐保介.jpg" mode="scaleToFill" style="width: 100%;"></image>
</view>
<view id="image4" class="" style="width: 45%;">
<image id="blurimage4" src="/static/写乐保介.jpg" mode="scaleToFill" style="width: 100%;"></image>
</view>
</view>
bsxBlurFrmViewByBitmap("image1", "blurimageadd", 2, 5, "")
bsxBlurFrmViewToView("image2", "blurimage2", 20, 5, "")
bsxBlurFrmViewByBitmap("image3","blurimage3",3, 1, "#59ffff00")
bsxBlurFrmViewByBitmap("image4","blurimage4",3, 1, "#59ffb6c1")
// 可以接收返回值 看处理的结果
let res = bsxClearViewBlur('blurimageadd')
console.log('clearViewBlur', res)
场景实现
遮罩层背景动态模糊(顶部栏背景动态模糊、底部栏背景动态模糊、弹出对话框背景模糊、抽屉层背景模糊等)
这种场景勉强可以用用,我做了测试,计时间隔100ms 去执行动态背景模糊。间隔太低,卡,间隔太高,拖影顿挫感强。实际项目不建议用!
没有找到好的动态模糊库,如果有的话,请分享一下哦。