理解Window和WindowManager
来源:互联网 发布:android 开启网络权限 编辑:程序博客网 时间:2024/04/29 12:52
Window标识一个窗口的概念,Window是一个抽行类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成。WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中。WindowManager和WindowManagerService的交互式一个IPC过程。Android中所有的师徒都是通过Window来呈现的,不管是Activity、Dialog还是Toast,他们的视图实际上都是附加在Window上的,因此,Window实际是View的实际管理者。View的事件分发机制由Window传递给DecorView,然后再由DecorView传递给我们的View,就连Activity的设置视图的方法setContentView在底层也是通过Window来完成的。
mFloatingButton = new Button(this);mFloatingButton.setTText("button");mLayoutParams = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,0,0,PixelFormt.TRANSPARENT); mLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL|LayoutParams.FLAG.NOT_FOCUSABLE|LayoutParams.FLAG_SHOW_WHEN_LOCKED mLayoutParams.gravity=Gravity.LEFT|Gravity.TOP; mLayoutParams.x=100; mLayoutParams.y=300; mWindowManager.addView(mFloatingButton,mLayoutParams);
上述代码可以将一个Button添加到屏幕坐标为(100,300)的位置上。
Window的内部机制
Window是一个抽象的概念,每个Window都对应着一个View和一个ViewRootImpl,Window和Vew通过ViewRootImpl来建立联系,因此Window并不是实际存在的,它是以View的形式存在的。这点从WindowManager的定义也可以看出,它提供的三个接口方法addView、updateViewLayout以及removeView都是针对View的,这说明View才是Window存在的实体。在实际使用中无法直接访问Window,对Window的访问必须通过WindowManager。为了分析Window的内部机制,这里从Window的添加、删除以及更新说起。
- 理解Window和WindowManager
- 理解Window和WindowManager
- 理解window和windowManager
- 理解Window和WindowManager
- 理解window和windowmanager
- 理解Window和WindowManager
- 理解Window和WindowManager
- 理解Window和WindowManager
- 读书笔记--理解Window和WindowManager
- Android 理解Window 和 WindowManager
- Window和WindowManager的理解
- 8_理解Window和WindowManager
- 第八章、理解Window和WindowManager
- 读书笔记(8) 理解Window 和WindowManager
- 对Window和WindowManager的理解
- 从源码入手理解Window和WindowManager
- 理解Window和WindowManager(一)
- 理解Window和WindowManager(二)
- Python爬虫的简单代码
- Java枚举类型enum
- 转载:Unix/Linux 网络 IO 模型简介
- pyc6
- The Necklace UVA - 10054 题解(欧拉回路,路径输出)
- 理解Window和WindowManager
- TCP与UDP的区别、ARP协议的作用、路由器与交换机的区别
- 解决跨域的代码
- 关于电脑未联网状态下,navicat for mysql 连接数据库不成功的解决办法
- 数据结构——线性表顺序表示和实现
- HDU1496:Equations(二分)
- Google下拉刷新控件SwipeRefreshLayout
- android使用okthtp
- saltstack实践案例