芜湖县建设局网站三生网络营销靠谱吗
1.窗口Window
在Android中显示一个界面,首先想到的是Activity、Dialog或Toast。但是在有些情况下,比如悬浮球,用Activity会显然多余,这个时候可以直接使用窗口来实现。
Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,它们的视图实际上都是附加在Window上,因此Window是实例view的直接管理者,单击事件由Window传给DecorView,再由DecorView传给view,而且Activity的setContentView方法在底层也是通过Window来完成的。
Window是一个抽象类,它的具体实现是PhoneWindow。创建一个Window需要通过WindowManager来完成,WindowManager是外界访问Window的入口,WindowManager的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。
整个Android的窗口机制是基于WindowManager接口的,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略Activity或Dialog(其实Activity和Dialog的底层实现也是通过WindowManager)。WindowManager是全局的,它是显示View的最底层了。因此使用WindowManager可以实现在桌面上可移动的悬浮窗,比如流量统计、桌面歌词等。
View是Ani中视图的呈现方式,但是view不能单独存在,它必须要附着在Window这个抽象概念上。每一个Window都对应着一个View和一个ViewRootImpl,Windo