suspensionWindow

来自于:开发者立即使用

概述

你从未用过的全新版本 2.0.0版本升级后,使用系统悬浮窗权限和一个service来实现,基本属性保留,但是实现方式完全改变。具体细节请详细阅读文档 此模块封装了Android手机上悬浮窗口的实现,可以实现一个悬浮在所有应用程序,桌面上的窗口。例如360手机加速球,酷狗音乐的桌面歌词,都是通过悬浮窗口做到的,在APP退出到后台时,仍然可以使用。(如果使用1.0.0版本,可以根据https://community.apicloud.com/bbs/thread-153528-1-1.html调用)使用此模块注意事项。 1.APP中使用此模块需要自定义loader或者云编译

2.当前越来越多的手机系统对悬浮窗做了权限管理,国内的android环境更是一团糟糕,使用getAppOps方法可以获取到当前APP悬浮窗是否有显示权限。如果没有,需要引导用户去手动打开悬浮窗权限。本次更新中createWindow方法会自动判断是否有权限,如果没有,会自动打开权限管理页面。因为每个系统的版本和型号不同,无法做到统一和100%,目前我自己测试的几部手机都是可以的。getAppOps也是如此.目前针对android4.0.3以上版本,6.0的动态权限,和8 9等版本测试来看都正常,如果使用中有异常,请联系我一起讨论

3.悬浮窗口的权限是系统高级权限,所以能显示在最上层,理论上权限仅次与电话权限。因此,不建议开启多个悬浮窗口。因此使用者设置一个全局变量在apiready中初始化

4.布局设计比较简单,只是打开一个内容区域,当然我们可以对此进行很多操作,去达到我们想要的效果,甚至可以直接去实现一个自定义样式的toast效果。

init

初始化

init()

示例代码

sup = api.require('suspensionWindow');
sup.init();

可用性

Android系统

getAppOps

getAppOps(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    p: true      //布尔型;true||false,当前设备是否有在APP之外显示悬浮窗口的权限
}

示例代码

sup.getAppOps(function(res) {
    alert(JSON.stringify(res));
});

可用性

Android系统

createWindow

创建一个悬浮窗口

createWindow({params},callback(ret,err))

params

x:100 窗口距离屏幕左边的距离

y:100 窗口距离屏幕上边的距离

w:200 窗口的宽度

h:200 窗口的高度

(注意:测试发现js传入的xp高度和android中dp高度不一样,为2倍的关系,所以传入100即为20,如果需要全屏,那么使用api.winWidth*2即可)

text: 字符串类型 :悬浮窗口中显示的文字信息

slid: 字符串类型,窗口滑动设置:yes=随意滑动,no=不可滑动,transverse=只允许横向滑动,portrait=只允许纵向滑动

style : {

    textSize : 15, //文字的大小

    raduis : 40,//悬浮窗口的圆角大小

    bgImg : 'widget://image/bg.png',//背景图片 此处注意bgImg参数和bgColor,raduis这组参数不能同时使用,意思是:当你设置背景图片的时候,你就不能设置背景色和圆角。这两组只能二选一。

    bgColor : '#FFFFFF',//背景颜色 (注意:此处所有颜色参数可使用透明设置,例如: #50FFFFFF,前两位数字表示透明度(16进制的))

    color : '#FFFFFF'//文字颜色

}

callback(ret,err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    ret: {
      code: 200,  //200表示正常 201为点击事件回调
      msg: '创建成功'
    },
    err:{
      code: 400.
      msg: '参数异常'
    }
}

示例代码

sup.createWindow({
                x : 0,
                y : 0,
                w : 80,
                h : 80,
                slid : 'yes',
                text : '1%',
                style : {
                    textSize : 15,
                    raduis : 40,
                    // bgImg : 'widget://image/bg.png',
                    bgColor : '#50FFFFFF',
                    color : '#FFFFFF'
                }
            }, function(res,err) {
        alert(JSON.stringify(res));
            });

可用性

Android系统

show

显示悬浮窗

show()

示例代码

sup.show();

可用性

Android系统

updateWindow

更新悬浮窗 updateWindow({params},callback(ret,err))

params

参数和createWindow相同如果需要更新文本,只传text即可

示例代码

    sup.updateWindow({
            x: 100,
            y: 100,
            w: 200,
            h: 200,
            slid: 'yes',
            text: '99%',
            style: {
                radius: 50,
                bgColor: '#0000ff',
                color: '#00ffff'
            }
        }, function(res, err) {
            alert(JSON.stringify(res));
        })

可用性

Android系统

隐藏悬浮窗

hidden

示例代码

    sup.hidden())

可用性

Android系统