suspensionWindow
来自于:开发者立即使用
init getAppOps createWindow show updateWindow hidden
概述
你从未用过的全新版本 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系统