android 系统全局弹框_Android 经典笔记七 全局弹窗Dialog

本文详细介绍了Android全局弹窗的实现,包括利用系统Dialog、WindowManager添加View以及在服务中获取栈顶Activity弹窗的方法。同时,讨论了权限问题,特别是Android 6.0以上版本的SYSTEM_ALERT_WINDOW权限,以及遇到的'Unable to add window'异常的解决方案。文中还提供了一个自定义Loading Dialog的示例。
摘要由CSDN通过智能技术生成

目录介绍

1.全局弹窗分析

2.全局弹窗必要条件

3.全局弹窗实现方式

3.1. 利用系统弹出dialog

3.2. 获取WindowManager,直接添加view

3.3. 在服务里,获取栈顶的Activity,弹窗

4.Dialog实现全局Loading加载框

4.1. 自定义Loading类

4.2. 给自定义的Dialog添加自定义属性

4.3. Loading布局

4.4. 开始使用

5.遇到的问题

5.1. 权限问题

5.2. Unable to add window

6.其他说明

好消息

博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计47篇[近20万字],转载请注明出处,谢谢!

如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

1.全局弹窗分析

开始认为dialog需要依附在Activity上,后经查询可采取悬浮窗的模式,使其不必依附于Activity,可在任一页面弹出

2.全局弹窗必要条件

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);设置dialog的类型

清单文件配置:

3.全局弹窗实现方式

第一个方法利用系统弹出dialog

在alter.show()语句前加入:

alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

然后在AndroidManifest.xml中加入权限:android.permission.SYSTEM_ALERT_WINDOW

第二个方法是获取WindowManager,直接添加view

wmParams = new WindowManager.LayoutParams();

//获取的是WindowManagerImpl.CompatModeWrapper

mWindowManager = (WindowManager)getApplication().getSystemService(getApplication().WINDOW_SERVICE);

//设置window type

wmParams.type = LayoutParams.TYPE_PHONE;

//设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)

wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;

//调整悬浮窗显示的停靠位置为左侧置顶

wmParams.gravity = Gravity.LEFT | Gravity.TOP;

// 以屏幕左上角为原点,设置x、y初始值,相对于gravity

wmParams.x = 0;

wmParams.y = 0;

//设置悬浮窗口长宽数据

wmPa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值