我们有时候需要显示一个悬浮窗,悬浮窗由服务开启,里面会有一些操作

但是我在开发时遇到高版本 Android12 和低版本4.4 ,显示不一样的地方

这边整理了下适配的方法方案

一:根据版本不一的时候,params的type设置为不一样的type

  1. WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
    或者 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
  1. /**
  2. * 设置悬浮框基本参数(位置、宽高等)
  3. */
  4. private void initWindow() {
  5. mWindowManager = (WindowManager) ServiceContext.getSystemService(Context.WINDOW_SERVICE);
  6. wmParams = getParams();//设置好悬浮窗的参数
  7. // 悬浮窗默认显示以左上角为起始坐标
  8. wmParams.gravity = Gravity.LEFT | Gravity.TOP;
  9. //悬浮窗的开始位置,因为设置的是从左上角开始,所以屏幕左上角是x=0;y=0
  10. wmParams.x = 70;
  11. wmParams.y = 210;
  12.  
  13. //检查版本,注意当type为TYPE_APPLICATION_OVERLAY时,铺满活动窗口,但在关键的系统窗口下面,如状态栏或IME
  14. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  15. wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
  16. } else {
  17. wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
  18. }
  19. // wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
  20. //得到容器,通过这个inflater来获得悬浮窗控件
  21. inflater = LayoutInflater.from(ServiceContext.getApplicationContext());
  22. // 获取浮动窗口视图所在布局
  23. mFloatingLayout = inflater.inflate(R.layout.alert_float_video_layout, null);
  24. // 添加悬浮窗的视图
  25. mWindowManager.addView(mFloatingLayout, wmParams);
  26.  
  27. }

二:不能忘了权限配置

  1. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

三:高版本需要动态获取权限引导用户配置 悬浮窗权限

  1. //检查悬浮窗显示在app上的权限
  2. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  3. if (!Settings.canDrawOverlays(context)) {
  4. //启动Activity让用户授权
  5. Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
  6. startActivity(intent);
  7. return;
  8. }
  9. }

这样就能正常适配悬浮窗显示开启了

Andorid 悬浮窗的适配指北的更多相关文章

  1. Android 悬浮窗权限各机型各系统适配大全

    这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时 ...

  2. Android 8悬浮窗适配

    背景 APP推出时,提示是退出还是更改账号,这个提示框是系统级别的.然而我的Android 9 会崩溃,宁外一个小伙伴Android 7运行理想.报错提示permission denied for w ...

  3. android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码

    Android精选源码 Android游戏2048 MVP Kotlin项目(RxJava+Rerotfit+OkHttp+Glide) Android基于自定义Span的富文本编辑器 android ...

  4. 微信网页悬浮窗交互效果的web实现

    一.微信的悬浮窗交互效果 微信更新后,发现多了个悬浮窗功能.公众号阅读,网页浏览回退后默认会出现.再点击,可以回到刚才阅读的地方.于是,再也不会遇到回复老婆的信息,再切换回来重新找刚才阅读东西的麻烦了 ...

  5. [转] iOS开发者的Weex伪最佳实践指北

    [From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享 ...

  6. Android 关于悬浮窗权限的问题

    正常情况下的处理: dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)以及在清单文件中添加 <use ...

  7. 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口

    最近业务需求需要我们直播返回或者退出直播间时,开一个小窗口在全局继续直播视频,先看效果图. 调研了一下当下主流直播平台,斗鱼.BiliBili等app,都是用WindowManger做的(这个你可以在 ...

  8. WindowManager 实现悬浮窗 详解

    WindowManager 实现悬浮窗 详解 一:对于想直接看效果的,可以看看我的demo app. 链接:http://sj.qq.com/myapp/detail.htm?apkName=com. ...

  9. Android悬浮窗实现 使用WindowManager

    Android悬浮窗实现 使用WindowManager WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得  ...

  10. Android仿360手机卫士悬浮窗效果

    请看下图:                         首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速.好,我们现在就来模拟实现一下 ...

随机推荐

  1. LeetCode-1996 游戏中弱角色的数量

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game 题目描述 你正 ...

  2. 【MySQL速通篇001】5000字吃透MySQL部分重要知识点

    写在前面 这篇5000多字博客也花了我几天的时间,主要是我对MySQL一部分重要知识点的理解[后面当然还会写博客补充噻,欢迎关注我哟],当然这篇文章可能也会有不恰当的地方[毕竟也写了这么多字,错别字可 ...

  3. JavaScrip 学习笔记

    <script> $().ready(function () { // 在键盘按下并释放及提交后验证提交表单 $("#form1").validate({ errorE ...

  4. VSCODE 界面设置

    如上图所示: 用插件background-cover ,再设置下图片路径即可,程序员专属的开发DIY界面随手可得 当然添加账号来同步,以后设置一次即可随时同步

  5. CodeGym自学笔记06——内存寻址和变量

    内存寻址和变量 print() print() 函数用于在屏幕上逐个字符显示文本.当屏幕上某一行没有足够空间时,文本开始在下一行显示. println() 可以使用 println() 函数停止在当前 ...

  6. 配置tomcat 服务 启动模式

    1配置Tomcat的环境变量,其步骤如下: 计算机右击属性,打开环境变量---系统变量---新建变量名:CATALINA_HOME,变量值为:D:\Program Files\Apache Softw ...

  7. Nextjs Contentful GraphQL Vercel Edges

    配置contentful 1. 创建免费账号 2. 根据提示进行操作, Content Model - 创建页面属性模板 (personalWebsite) content entry  -  根据属 ...

  8. Workbench download Document

    1. package.xml <?xml version="1.0" encoding="UTF-8"?> <Package xmlns=&q ...

  9. JAVA查漏补缺 2

    JAVA查漏补缺 2 目录 JAVA查漏补缺 2 面向对象编程 定义类的注意事项 两个变量指向同一个对象内存图 垃圾回收机制 面向对象编程 面向:找.拿 对象:东西 面向对象编程:找或拿东西过来编程 ...

  10. Java集合-练习巩固

    练习一 public class H1_Test { public static void main(String[] args) { H1_News h1News = new H1_News(&qu ...