重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在工作中遇到一个需求,需要在整个应用的上层悬浮显示控件,目标效果如下图:
创新互联建站是一家集网站建设,温江企业网站建设,温江品牌网站建设,网站定制,温江网站建设报价,网络营销,网络优化,温江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。首先想到的是申请悬浮窗权限,OK~ 打开搜索引擎,映入眼帘的并不是如何申请,而是“Android 悬浮窗权限各机型各系统适配大全、Android 绕过权限显示悬浮窗...”,为什么悬浮窗权限会有这么多坑呢?悬浮窗可以在桌面显示,被恶意软件用来偷偷弹广告怎么办?作为一个系统级别的特殊权限,这是它应有的高傲 - -
正确引导用户打开悬浮窗权限才是标准做法,若这就是定论的话这篇文章也没必要写了,我们绕过悬浮窗权限直接去显示,大多数是为了优化用户体验,并不是恶意的。有时我们只想在自己的应用内实现悬浮窗,然而 Andorid 并没有提供这样的方法,也只好退而求其此的去使用系统级别的悬浮窗权限。
OK ,既然可以绕过权限申请,再重新定义一下需求:
尽量绕过申请权限,实现在 app 指定界面显示悬浮控件,控件的位置不需要改变
怎么绕过悬浮窗权限呢?网上大多数通过 WindowManager 添加一个 TYPE_TOAST 类型的控件,如下:
WindowManager windowManager = (WindowManager) applicationContext.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_TOAST; windowManager.addView(view, layoutParams);