Android 悬浮框 覆盖与被覆盖

简介
悬浮窗是Android平台的特色之一,熟练使用悬浮窗很重要,当大家都使用悬浮窗的时候,于是乎就有了现在的覆盖与被覆盖的问题。
 
在笔者接触所有app中,悬浮窗的覆盖能力最强的属某点,几乎把其他所有的app都覆盖了。
 
 
 
详情
涉及悬浮窗口的类:WindowManager、WindowManagerImpl,CompatModeWrapper(WindowManagerImpl的内部类),LocalWindowManager(Window的内部类)。
 
如图:

掌握了它的原理,我们来写一个项目测试,测试结果如下:
 
在View相同等级情况下(flag标识),后弹出的悬浮窗覆盖之前的悬浮窗。

有没有一种方法令所有的悬浮窗都被覆盖?
 
笔者有几种方案:
 
1、反射机制清空所有的悬浮窗。(已实现)
 
2、找出最大flag标识。(已实现)
 
3、判断自己的悬浮窗是否被覆盖,被覆盖则重新弹出。(已实现)
 
 
 
悬浮窗能不能监听到返回键?
 
笔者目前没找到一种有效的方案,本想通过底层拦截事件然后返回给悬浮窗,但后来想想,简单的程序简单做,不要把程序搞得那么复杂。
 
 
 
好了不多说了,方案已经列出来了,感兴趣的朋友赶紧去实现吧。
暂无评论
  • 1:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心