android悬浮窗的实现

悬浮窗原理

思路:
1.建立一个服务,并且在里面生成一个WindowManager对象,通过它来加载一个视图作为悬浮窗。
2.设置WindowManager的参数LayoutParams
3.设置一个容器来找到悬浮窗的父控件,并绑定到windowManager中去
4.通过父控件来加载悬浮窗的视图
这个思路需要注意的两个细节:
a. WindowManager的参数LayoutParams中的type字段,目前主流的做法是将改字段赋值为LayoutParams.TYPE_PHONE.
b. 需要在AndroidManifest中加上相应的权限

否则无法出现悬浮窗。
上面省略的布局文件的说明,详情可以参考代码部分。
到这里,如果运气好的话,你很容易就可以用代码实现一个悬浮窗,再复杂一点的还可以顺便实现拖动效果,然而现实总是很残酷的,由于安卓系统的碎片化现象太严重,各家ROM对这个悬浮窗做了各种限制,比如小米的miui、魅族和锤子等只有用户进入到应用设置页面,打开悬浮窗开关才能显示悬浮窗(如图1和图2),这就比较麻烦了,从而导致早期悬浮窗在实际中比较难以推广。
这里写图片描述
图 1 锤子系统
这里写图片描述
图 2 MIUI系统

后来发现安卓本身有一些特殊的方式可以绕过这个权限检查,即将LayoutPar

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值