android 更改窗口的层次,浮窗开发之窗口层级

本文探讨了Android浮窗如何实现并悬浮于其他应用之上,从Activity的显示原理入手,解析窗口层级关系,包括Activity与Window、Window与View的联系,并解释了浮窗能“浮”的原因在于指定的LayoutParams.type。文章还介绍了不同窗口类型的z轴层次,为实现浮窗提供关键信息。
摘要由CSDN通过智能技术生成

最近在项目中遇到了这样的需求:需要在特定的其他应用之上悬浮自己的UI交互(拖动、输入等复杂的UI交互),和九游的浮窗类似,不过我们的比九游的体验更好,我们越过了很多授权的限制。

b4c23dee9206

浮窗效果

很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点:

窗口层级关系(浮窗是如何“浮”的)?

浮窗有哪些限制,如何越过用户授权实现浮窗功能?

窗口与用户输入系统(Activity是如何接收到touch事件的)?

本章我们来研究第一个问题:浮窗为何会浮。浮窗之所以叫浮窗,是因为它能悬浮于应用或者桌面窗口之上,能脱离Activity而存在。为了研究其中区别,我们先来看看我们最熟悉的Activity是怎么显示出来的。

Activity是怎么显示出来的?

要弄清这个问题答案,我们先从Activity的setContentView()这个方法的源码开始找起,在Activity中看到setCententView的源码:

public void setContentView(int layoutResID) {

getWindow().setContentView(layoutResID);

initWindowDecorActionBar();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值