Android控件架构

首先本文参考android群英传书籍,Android开发艺术探索。
  • android控件中大致可以分为两类:一个是ViewGroup,一个是View控件。ViewGroup作为父控件,里面可以包含多个View控件,并且管理这些包含的View控件。通过ViewGroup,整个界面上的控件形成了一个树形的控件树,父控件对子控件有绝对的掌控权,每个子控件的占地面积和位置,都是基于父控件来分配的,上层控件控制下层控件的测量和绘制,并且传递交互事件。通常在Activity中使用的findViewById()方法,就是在控件树上以树的的深度优先遍历来查找对应的控件元素。在每一个树的顶部,都有一个ViewParent对象这是控件树的核心,所有的交互管理事件都是由他来进行统一的调度的,从而可以对整个师徒进行整体的控制。如下的控件树:

 每一个Activity中都包含一个Window对象,在Android中window对象通常是由PhoneWindow来实现的。PhoneWindow将一个DecorView设置为整个应用窗口的根View。DecorView作为窗口界面的顶层视图,封装了一些窗口操作的基本方法。将要显示的具体内容呈现在PhoneWindow上,我们的View的监听事件都是由WindowMangerService来进行接收,并且通过Activity的对象来回调相应的onClickListener.在显示上。它将屏幕分成两部分:一个是titleView,另外一个就是ContentView。


最常用的布局--上面显示TitleBar下面是content这样得的

而用户设置requestWindowFeature(Window.FEATURE_NO_TITLE)来设置全屏显示,也就是视图树中只有content的内容。所以我们的requestWindowFeature(Window.FEATURE_NO_TITLE一定要在setContentView()方法之前去调用才能生效。


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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值