Android控件架构和界面架构

Android控件架构

在Android中每个控件都是占据一块矩形区域。其中控件分为两类,即ViewGroup和View。ViewGroup控件作为父控件可以包含并管理若干子控件。通过ViweGroup和View控件,整个界面上的控件就形成了一个树形结构,也就是人们常说的控件树。其中上层控件负责下层子控件的测量与绘制,并传递交互事件。我们经常调用的findViewById()其实就是查找当前ViewGroup中的子View。在每棵控件树的顶部,都有一个ViewParent对象,这就是整棵数的控制核心,所有的交互管理事件都由它来统一调度和分配。

     控件树:

Android控件架构和界面架构_第1张图片

Android界面的架构图

如下图:

    Android控件架构和界面架构_第2张图片


如图所示,每个Activity都包含一个Window对象,在Android中Window对象通常是由PhotoWindow来实现。PhotoWindow将一个DecorView设置为整个应用窗口的根View。DecorView封装了一些窗口操作的通用方法。DecorView将要显示的具体内容呈现在了PhotoWindow上,在这里所有的View的监听事件,都通过WindowsManagerService来进行接收,并通过Activity对象来回调相应的onclickListener。

在显示上,它将屏幕分为两部分TitleViw和ContentView。其中ContentView是一个ID为content的FrameLayout。我们平时在Activity中调用的setContentView()就是给这个FrameLayout设置布局。

注意:如果用户设置了

requestWindowFeature(Window.FEATURE_NO_TITLE);DecroViwe中的布局也就只有Content了。这就是为什么这个requestWindowFeature方法要在setContentView方法之前调用了。

在代码中,当程序在onCreate()方法中调用SetContentView()方法后,ActivityManagerService会回调onResume()方法,此时系统才会把整个DecorView添加到PhotoWindow中,并让其显示出来,从而最终完成界面的绘制。





   

你可能感兴趣的:(Android控件架构和界面架构)