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()

示例代码

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

可用性

Android系统

getAppOps

getAppOps(callback(ret))

callback(ret)

ret:

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

示例代码

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

可用性

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 : {

  1. textSize : 15, //文字的大小
  2. raduis : 40,//悬浮窗口的圆角大小
  3. bgImg : 'widget://image/bg.png',//背景图片 此处注意bgImg参数和bgColor,raduis这组参数不能同时使用,意思是:当你设置背景图片的时候,你就不能设置背景色和圆角。这两组只能二选一。
  4. bgColor : '#FFFFFF',//背景颜色 (注意:此处所有颜色参数可使用透明设置,例如: #50FFFFFF,前两位数字表示透明度(16进制的))
  5. color : '#FFFFFF'//文字颜色
  6. }

callback(ret,err)

ret:

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

示例代码

  1. sup.createWindow({
  2. x : 0,
  3. y : 0,
  4. w : 80,
  5. h : 80,
  6. slid : 'yes',
  7. text : '1%',
  8. style : {
  9. textSize : 15,
  10. raduis : 40,
  11. // bgImg : 'widget://image/bg.png',
  12. bgColor : '#50FFFFFF',
  13. color : '#FFFFFF'
  14. }
  15. }, function(res,err) {
  16. alert(JSON.stringify(res));
  17. });

可用性

Android系统

show

显示悬浮窗

show()

示例代码

  1. sup.show();

可用性

Android系统

updateWindow

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

params

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

示例代码

  1. sup.updateWindow({
  2. x: 100,
  3. y: 100,
  4. w: 200,
  5. h: 200,
  6. slid: 'yes',
  7. text: '99%',
  8. style: {
  9. radius: 50,
  10. bgColor: '#0000ff',
  11. color: '#00ffff'
  12. }
  13. }, function(res, err) {
  14. alert(JSON.stringify(res));
  15. })

可用性

Android系统

隐藏悬浮窗

hidden

示例代码

  1. sup.hidden())

可用性

Android系统