(四)View的控件架构

来源:互联网 发布:ubuntu 16.04改中文 编辑:程序博客网 时间:2024/06/12 01:37
Android的控件架构
       Android中控件大致分为ViewGroup控件和View控件。在Activity中使用的findViewbyId()方法,就是在控件树中以深度优先遍历查找对应元素。

                                                           android UI架构图
每个Activvity都包含一个Window对象,该对象通常由PhoneWindow实现,该Window在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建; PhoneWindow将一个DecorView设置为整个应用窗口的根View。DecorView作为窗口界面的顶层视图,封装了一些窗口操作的通用方法。DecorView将要显示的具体内容呈现在了PhoneWindow,这里面的所有View的监听事件都通过WSM(WindowManagerService)来进行接受,通过Activity对象来回调相应的Listener。显示上,DecorView装载了一个竖的LinearLayout,将屏幕分为两部分TitleView和ContentView。ContentView是一个ID为content的FrameLayout,在Activity中调用的setContentView就是给ContentView设置内容的。注意:当程序在onCreate()方法中setContentView()方法后,AMS(ActivityManagerService)会回调onResume()方法,此时系统会将整个DecorView添加到PhoneWindow中,以完成界面绘制。

ViewRoot是连接DecorView和WMS的纽带,对应于ViewRootImpl类,View的三大流程均是通过ViewRoot完成。





















原创粉丝点击