研究并写了一套悬浮窗实现方案,缩放,移动,关闭,点击,自定义某个页面显示,我采用的是内部view添加布局展示悬浮窗,此方案在线上稳定运行,可根据需要自行修改。
About FloatWindow
Android APP中实现悬浮窗的场景很多,比如悬浮窗播放视频,离开直播间,或者退出应用,继续播放直播流等。本项目在线上稳定运行,仅供参考,可根据自己的需求,改进,欢迎交流。
悬浮窗的实现方式
一,Window Manager实现
通常的做法是使用WindowManager,使用其addView方法,添加一个布局view来实现系统弹窗,大部分window type需要申请权限,如果是
该方式,既可以在app内部显示,也可以在应用外也显示,缺点是有兼容性问题,需要做ROM适配,而且因为更新布局迟钝,不适合对悬浮窗做缩放操作,本项目有该方案的具体实现,具体参照demo。
悬浮窗主要是通过WindowManager这个类实现的,这个类有3个方法:
|
|
以下是部分代码:
|
|
二,顶级view添加悬浮窗
demo中还提供了另外一种优雅的实现方式,无需申请权限,任意界面都可以显示悬浮窗,此弹窗,无需申请权限,可以拖动,缩放,关闭,点击,没有兼容性问题,限于app内部,可以在BaseActivity中注入。
|
|
基本上可以满足大部分的需要,仅供参考。
详细代码,请移步我的Github,
请star一下,表示支持噢:
Android-FloatWindow
duqian2010@gmail.com
杜乾,wechat:dusan2010
微信公众号:OpenDeveloper
分享不仅限于Android,Web 开发,做开放的完美的开发者。
博客:
http://blog.csdn.net/dzsw0117
https://www.jianshu.com/u/883a136d8fbe