Android控件架构与自定义控件

来源:互联网 发布:淘宝和田玉店铺 编辑:程序博客网 时间:2024/06/03 19:14

1.Android控件架构

    Android中的控件分为两类,ViewGroup和View。

                              ViewParent
                                       |
控件树
    ViewGroup可以作为父控件管理包含的View控件。上层控件负责下层子空间的测量与绘制,并传递交互事件。使用Activity的findViewById()方法就是在控件树中使用深度优先遍历来查找对应的元素。每个控件树的顶部都有一个ViewParent对象,为控件树的控制核心,所有的交互管理事件都有它来统一调度和分配,从而对整棵树进行整体控制。
    通常情况下,在Activity中要使用setContentView()方法设置布局,在调用该方法后,布局内容才会真正的显示出来(其实真正显示出来是在onResume()后完成的),Activity界面架构图如下:
这里写图片描述
     每个Activity都包含一个Window对象,通常由PhoneWindow来实现。PhoneWindow将一个DecorView作为整个窗口的根View,DecorView作为窗口界面的顶层试图,封装了一些窗口操作的通用方法。显示上,DecorView中将屏幕分成了两个部分,TitleView和ContentView。所以其实Activity中其实setContentView设置的就是ContentView的布局,ContentView是一个Id为content的FrameLayout,activity_main.xml就是设置的这个FrameLayout里面。
     如果想不显示TitleView 可以使用requestWindowFeature方法,但是这一步一定要在setContentView之前。
     代码中onCreate()中调用了setContentView()方法后,ActivityManagerService会回调onResume()方法,此时系统才会把整个DecorView添加到PhoneWindow中,并让其显示出来完成绘制。

2.View的测量

     Android在onMeasure中完成对控件的测量。

0 0