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

但是我在开发时遇到高版本 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;
}
}

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

最新文章

  1. Markdown通用的常用语法说明
  2. 洛谷 P1204 [USACO1.2]挤牛奶Milking Cows Label:模拟Ex 74分待查
  3. 在 Java 代码中对 Kerberos 主体进行身份验证
  4. 微信支付开发-当前页面的URL未注册
  5. bootstrap 入门
  6. topcoder SRM 594 DIV2 AstronomicalRecordsEasy
  7. 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
  8. 数据可视化工具zeppelin安装
  9. BZOJ1579 [Usaco2009 Feb]Revamping Trails 道路升级
  10. 【转】android UI设计的一些心得与问题解决(无效果图)
  11. 瞬间从IT屌丝变大神——注释规则
  12. 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
  13. SPSS相关和回归分析
  14. SQL in、not in、exists和not exists的区别:
  15. JavaScript——this
  16. arp协议分析&amp;python编程实现arp欺骗抓图片
  17. 既使用maven编译,又使用lib下的Jar包
  18. java restful接口
  19. STM32 ADC多通道转换
  20. Java求解迷宫问题:栈与回溯算法

热门文章

  1. cowtransfer(奶牛快传)自动上传文件脚本—流程分析
  2. Java语言输出菱形图型
  3. axios 进行同步请求(async+await+promise)
  4. 第十一周作业-N67044-张铭扬
  5. FastAPI中声明参数为必需的三种方式
  6. el-dialog 遮罩层覆盖内容的问题
  7. python GIL解释器
  8. Kotlin初学习
  9. spring 理念与项目构建
  10. yagmail 邮件模块