当前位置: 代码迷 >> Android >> 带你从app进口到对话框到悬浮窗剖析android-UI层级一
  详细解决方案

带你从app进口到对话框到悬浮窗剖析android-UI层级一

热度:88   发布时间:2016-04-28 01:38:52.0
带你从app入口到对话框到悬浮窗剖析android-UI层级一

起源:前几天一个网友问我,他有个需求在来电的时候弹窗提示信息—使用WindowManager.addView(),但是遇到360之类的系统安全APP也会弹窗提示,会被其他的弹窗盖住,使用TYPE_SYSTEM_ALERT类型过后,有的手机会有的机器不会,然后我突然想起既然大都是这种方式添加的弹窗,我们能不能获取到其他APP的弹窗View呢,如果能获取到,那么可以将之移除 *_*,哇咔咔咔~太坏了。

经过几天的资料查找和源码分析,重点查看了android的窗口管理方面(涉及到的类和接口:ViewManager,WindowManager,WindowManagerImpl,WindowManagerPolicy,WindowManager,WindowManager.LayoutParams,CompatModeWrapper,DecorView,ViewRootImpl,Window,PhoneWindow,PolicyManager,ActivityThread等等还有其他很多),还是找到一些蛛丝马迹。

当然,这篇文章的重点不在于最终是否能将其他APP的弹窗给删除掉,而是可以一种学习方式,有所想有所学。从这个思路去探测源码内部的世界到底怎么样~~

好了,接下来开始踏步走...

既然是UI层级,当然就会涉及到覆盖问题。你想想,从系统启动到桌面到APP启动,android的UI变化等等,以及我们APP的layout里面,一层一层的,android是如何控制的呢?还有你看到的状态栏StatusBar,状态栏下滑出现的系统抽屉(notifications栏列表之类的),以及一些没有实体键的手机的虚拟按键之类的。

先上几张图简单看一下...



先去吃个饭,回来继续.....

再介绍一些后续需要涉及到的东西:





  相关解决方案