Andorid 悬浮窗的适配指北
2024-09-03 21:19:24
我们有时候需要显示一个悬浮窗,悬浮窗由服务开启,里面会有一些操作
但是我在开发时遇到高版本 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;
}
}
这样就能正常适配悬浮窗显示开启了
最新文章
- Markdown通用的常用语法说明
- 洛谷 P1204 [USACO1.2]挤牛奶Milking Cows Label:模拟Ex 74分待查
- 在 Java 代码中对 Kerberos 主体进行身份验证
- 微信支付开发-当前页面的URL未注册
- bootstrap 入门
- topcoder SRM 594 DIV2 AstronomicalRecordsEasy
- 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
- 数据可视化工具zeppelin安装
- BZOJ1579 [Usaco2009 Feb]Revamping Trails 道路升级
- 【转】android UI设计的一些心得与问题解决(无效果图)
- 瞬间从IT屌丝变大神——注释规则
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
- SPSS相关和回归分析
- SQL in、not in、exists和not exists的区别:
- JavaScript——this
- arp协议分析&;python编程实现arp欺骗抓图片
- 既使用maven编译,又使用lib下的Jar包
- java restful接口
- STM32 ADC多通道转换
- Java求解迷宫问题:栈与回溯算法