更新记录

1.5(2023-10-17)

1、给拖动添加上下边界

1.4(2022-10-21)

优化显示

1.3(2022-10-17)

支持动态修改悬浮窗图片

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


悬浮窗(在其他应用上层显示) Ba-FloatWindow

简介

Ba-FloatWindow 是一款在其他应用上层显示的悬浮窗插件。支持多种场景;支持拖动;支持多个。 (注意:建议先试用,再购买)。

  • 支持自动定义起始位置
  • 支持自定义悬浮窗大小
  • 支持贴边显示
  • 支持多种拖动方效果:不可拖动、任意拖动、贴边拖动、回弹拖动
  • 支持显示多个悬浮窗(设置不同的tag,当然可以用多个悬浮窗,拼凑你想要的图样效果)
  • 支持应用内不显示,应用外自动显示的经典场景(在app.vue中设置)
  • 支持自定义某界面显示、不显示
  • 支持动态修改悬浮窗图片

注意: 新增支持自定义任意界面版本(Ba-FloatWinWeb),功能更强大,采用webview方式,同时支持本地、网络地址;自带几种界面,可直接使用。


有建议和需要,请联系QQ:2579546054

也可关注博客,实时更新最新插件

uniapp 常用原生插件大全


使用方法

script 中引入组件

    const floatWindow = uni.requireNativePlugin('Ba-FloatWindow')

script 中调用

        data() {
            return {
                widthRatio: 0.1,
                heightRatio: 0.1,
                xRatio: 0.8,
                yRatio: 0.8,
                moveType: 3,
                slideLeftMargin: 0,
                slideRightMargin: 0,
                duration: 500,
                desktopShow: true,
                tag: "",
                iconPath: "ba_float_win_icon"
            }
        },
        methods: {
            initIcon() { //初始化
                floatWindow.initIcon({
                            widthRatio: this.widthRatio,
                            heightRatio: this.heightRatio,
                            xRatio: this.xRatio,
                            yRatio: this.yRatio,
                            moveType: this.moveType,
                            slideLeftMargin: this.slideLeftMargin,
                            slideRightMargin: this.slideRightMargin,
                            duration: this.duration,
                            desktopShow: this.desktopShow,
                            tag: this.tag,
                            iconPath: this.iconPath
                        },
                        (res) => {
                            console.log(res);
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                duration: 3000
                            })
                        });
                },
            showIcon() { //显示
                floatWindow.showIcon({
                        tag: this.tag
                    },
                    (res) => {
                        console.log(res);
                        if(res.code&&res.code==2){
                            //点击事件
                        }
                        uni.showToast({
                            title: res.msg,
                            icon: "none",
                            duration: 3000
                        })
                    });
            },
            hideIcon() { //隐藏
                floatWindow.hideIcon({
                        tag: this.tag
                    });
            },
            changeIcon() { //动态更新悬浮窗图片
                floatWindow.changeIcon({
                        tag: this.tag,
                        iconPath: this.iconPath
                    },
                    (res) => {
                        console.log(res);
                        uni.showToast({
                            title: res.msg,
                            icon: "none",
                            duration: 3000
                        })
                    });
            },
        }

UI 图标设置

  • 默认悬浮图标:默认悬浮图标设置,在项目的 “nativeplugins\Ba-FloatWindow\android\res\drawable-xxhdpi” 目录下(没有就新建),添加 “ba_float_win_icon.png” 图片文件即可。注意:更改后需要重新制作基座才能生效,建议提前配置。
  • 自定义悬浮图标:自定义图标路径和默认一样,任意添加图片,名字在 initIcon方法的 “iconPath”字段设置即可。如添加自定义图片"custom_icon.png",那么设置 iconPath 为 "custom_icon"

方法清单

名称 说明
initIcon 初始化悬浮窗
showIcon 显示悬浮窗
hideIcon 隐藏悬浮窗
changeIcon 动态修改悬浮窗图片

点击事件

点击事件在showIcon方法中监听,参照“使用方法”

注意:如需在后台时也能点击调起,可在监听事件中调用如下方法:

            showIcon() { //展示
                let that = this;
                floatWindow.showIcon({
                        tag: this.tag
                    },
                    (res) => {
                        console.log(res);
                        if (res.code && res.code == 2) {
                            //点击事件
                            that.toLaunch();
                        }
                    });
            },
            toLaunch() {//应用在后台时,可调起
                let platform = uni.getSystemInfoSync().platform;
                if (platform == 'android') {
                    var main = plus.android.runtimeMainActivity();
                    var Intent = plus.android.importClass("android.content.Intent");
                    var intent = new Intent(Intent.ACTION_MAIN);
                    intent.setClassName(main, "io.dcloud.PandoraEntry");
                    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    //intent.putExtra("xxx", "111111");//携带参数(如要在调起后,需要执行后续逻辑,可在这里自定义参数,在app.vue的onShow事件中监听,如下)
                    main.startActivity(intent);
                } 
            },

在应用生命周期App.vue的onLaunch事件中设置监听:

        onLaunch: function() {
            this.checkArguments();
            // 重点是以下: 一定要监听后台恢复 !一定要   
            plus.globalEvent.addEventListener('newintent', (e) => {
                this.checkArguments(); // 检测启动参数  
            });
        },
        onShow: function() {
        },
        onHide: function() {
        },
        methods: {
            checkArguments() {
                var args = plus.runtime.arguments;
                if (args) {
                    let args1 = JSON.parse(args);
                    if (args1.xxx) { //自定义参数判断
                        //这里写你的处理逻辑
                    }
                }
            },
        }

initIcon 方法参数

初始化悬浮窗

属性名 类型 必填 默认值 说明
widthRatio Number false 0.15 根据屏幕宽度比例,设置悬浮窗宽度
heightRatio Number false 0.15 根据屏幕宽度比例,设置悬浮窗高度
xRatio Number false 0.8 根据屏幕宽度比例,设置悬浮窗x轴起始位置
yRatio Number false 0.8 根据屏幕高度比例,设置悬浮窗y轴起始位置
moveType Number false 3 拖动效果,1:不可拖动、2:任意拖动、3:贴边拖动、4:回弹拖动
slideLeftMargin Number false 0 左侧贴边位置,支持负数
slideRightMargin Number false 0 右侧贴边位置,支持负数
duration Number false 500 间隔时间ms
tag String false 'default_float_window_tag' 为该弹窗设置标识,以做区分,用于多个
iconPath String false 资源图片项目路径,参照'UI 图标设置'

showIcon 方法参数

显示悬浮窗

属性名 类型 必填 默认值 说明
tag String false 'default_float_window_tag' 为该弹窗设置标识,以做区分,用于多个

hideIcon 方法参数

隐藏悬浮窗

属性名 类型 必填 默认值 说明
tag String false 'default_float_window_tag' 为该弹窗设置标识,以做区分,用于多个

changeIcon 方法参数

动态修改悬浮窗图片

属性名 类型 必填 默认值 说明
tag String false 'default_float_window_tag' 为该弹窗设置标识,以做区分,用于多个
iconPath String false 资源图片项目路径,参照'UI 图标设置'

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件 Ba-Notify文档

应用未读角标插件 Ba-Shortcut-Badge文档

应用开机自启插件 Ba-Autoboot文档

扫码原生插件(毫秒级、支持多码)Ba-Scanner-G文档

扫码原生插件 - 新(可任意自定义界面版本;支持连续扫码;支持设置扫码格式)Ba-Scanner文档

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar文档

原生sqlite本地数据库管理 Ba-Sqlite文档

安卓保活插件(采用多种主流技术) Ba-KeepAlive文档

安卓快捷方式(桌面长按app图标) Ba-Shortcut文档

自定义图片水印(任意位置) Ba-Watermark文档

最接近微信的图片压缩插件 Ba-ImageCompressor文档

视频压缩、视频剪辑插件 Ba-VideoCompressor文档

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon文档

原生Toast弹窗提示(穿透所有界面、穿透原生;自定义颜色、图标 ) Ba-Toast文档

图片涂鸦、画笔 Ba-ImagePaint文档

pdf阅读(手势缩放、显示页数) Ba-Pdf文档

声音提示、震动提示、语音播报 Ba-Beep文档

websocket原生服务(自动重连、心跳检测) Ba-Websocket文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问