Andorid 悬浮窗的适配指北
我们有时候需要显示一个悬浮窗,悬浮窗由服务开启,里面会有一些操作
但是我在开发时遇到高版本 Android12 和低版本4.4 ,显示不一样的地方
这边整理了下适配的方法方案
一:根据版本不一的时候,params的type设置为不一样的type
- 为 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
或者 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- /**
- * 设置悬浮框基本参数(位置、宽高等)
- */
- private void initWindow() {
- mWindowManager = (WindowManager) ServiceContext.getSystemService(Context.WINDOW_SERVICE);
- wmParams = getParams();//设置好悬浮窗的参数
- // 悬浮窗默认显示以左上角为起始坐标
- wmParams.gravity = Gravity.LEFT | Gravity.TOP;
- //悬浮窗的开始位置,因为设置的是从左上角开始,所以屏幕左上角是x=0;y=0
- wmParams.x = 70;
- wmParams.y = 210;
- //检查版本,注意当type为TYPE_APPLICATION_OVERLAY时,铺满活动窗口,但在关键的系统窗口下面,如状态栏或IME
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- }
- // wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- //得到容器,通过这个inflater来获得悬浮窗控件
- inflater = LayoutInflater.from(ServiceContext.getApplicationContext());
- // 获取浮动窗口视图所在布局
- mFloatingLayout = inflater.inflate(R.layout.alert_float_video_layout, null);
- // 添加悬浮窗的视图
- mWindowManager.addView(mFloatingLayout, wmParams);
- }
二:不能忘了权限配置
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
三:高版本需要动态获取权限引导用户配置 悬浮窗权限
- //检查悬浮窗显示在app上的权限
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (!Settings.canDrawOverlays(context)) {
- //启动Activity让用户授权
- Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
- startActivity(intent);
- return;
- }
- }
这样就能正常适配悬浮窗显示开启了
Andorid 悬浮窗的适配指北的更多相关文章
- Android 悬浮窗权限各机型各系统适配大全
这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时 ...
- Android 8悬浮窗适配
背景 APP推出时,提示是退出还是更改账号,这个提示框是系统级别的.然而我的Android 9 会崩溃,宁外一个小伙伴Android 7运行理想.报错提示permission denied for w ...
- android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码
Android精选源码 Android游戏2048 MVP Kotlin项目(RxJava+Rerotfit+OkHttp+Glide) Android基于自定义Span的富文本编辑器 android ...
- 微信网页悬浮窗交互效果的web实现
一.微信的悬浮窗交互效果 微信更新后,发现多了个悬浮窗功能.公众号阅读,网页浏览回退后默认会出现.再点击,可以回到刚才阅读的地方.于是,再也不会遇到回复老婆的信息,再切换回来重新找刚才阅读东西的麻烦了 ...
- [转] iOS开发者的Weex伪最佳实践指北
[From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享 ...
- Android 关于悬浮窗权限的问题
正常情况下的处理: dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)以及在清单文件中添加 <use ...
- 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
最近业务需求需要我们直播返回或者退出直播间时,开一个小窗口在全局继续直播视频,先看效果图. 调研了一下当下主流直播平台,斗鱼.BiliBili等app,都是用WindowManger做的(这个你可以在 ...
- WindowManager 实现悬浮窗 详解
WindowManager 实现悬浮窗 详解 一:对于想直接看效果的,可以看看我的demo app. 链接:http://sj.qq.com/myapp/detail.htm?apkName=com. ...
- Android悬浮窗实现 使用WindowManager
Android悬浮窗实现 使用WindowManager WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 ...
- Android仿360手机卫士悬浮窗效果
请看下图: 首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速.好,我们现在就来模拟实现一下 ...
随机推荐
- LeetCode-1996 游戏中弱角色的数量
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game 题目描述 你正 ...
- 【MySQL速通篇001】5000字吃透MySQL部分重要知识点
写在前面 这篇5000多字博客也花了我几天的时间,主要是我对MySQL一部分重要知识点的理解[后面当然还会写博客补充噻,欢迎关注我哟],当然这篇文章可能也会有不恰当的地方[毕竟也写了这么多字,错别字可 ...
- JavaScrip 学习笔记
<script> $().ready(function () { // 在键盘按下并释放及提交后验证提交表单 $("#form1").validate({ errorE ...
- VSCODE 界面设置
如上图所示: 用插件background-cover ,再设置下图片路径即可,程序员专属的开发DIY界面随手可得 当然添加账号来同步,以后设置一次即可随时同步
- CodeGym自学笔记06——内存寻址和变量
内存寻址和变量 print() print() 函数用于在屏幕上逐个字符显示文本.当屏幕上某一行没有足够空间时,文本开始在下一行显示. println() 可以使用 println() 函数停止在当前 ...
- 配置tomcat 服务 启动模式
1配置Tomcat的环境变量,其步骤如下: 计算机右击属性,打开环境变量---系统变量---新建变量名:CATALINA_HOME,变量值为:D:\Program Files\Apache Softw ...
- Nextjs Contentful GraphQL Vercel Edges
配置contentful 1. 创建免费账号 2. 根据提示进行操作, Content Model - 创建页面属性模板 (personalWebsite) content entry - 根据属 ...
- Workbench download Document
1. package.xml <?xml version="1.0" encoding="UTF-8"?> <Package xmlns=&q ...
- JAVA查漏补缺 2
JAVA查漏补缺 2 目录 JAVA查漏补缺 2 面向对象编程 定义类的注意事项 两个变量指向同一个对象内存图 垃圾回收机制 面向对象编程 面向:找.拿 对象:东西 面向对象编程:找或拿东西过来编程 ...
- Java集合-练习巩固
练习一 public class H1_Test { public static void main(String[] args) { H1_News h1News = new H1_News(&qu ...