Android控件架构

Android控件架构

我们经常编写Layout文件,通过Layout文件我们可以看到所有的View在界面上均占有一矩形区域,而我们可以把这种矩形区域(View)大致分为两类,即包含有小矩形区域的大矩形区域(ViewGroup)和单一的矩形区域(View),这种大小矩形相套的格局,自顶向下形成一种树形结构,我们可以将其称为View树.

下图是我绘制的一幅简略的View树,以便大家更好地理解这种层次:
View树

ViewGroup是Layout和View Container的基类,ViewGroup.LayoutParams为ViewGroup提供布局参数,其内可包含多个View,并管理其所包含的View.在整个View树中,上层控件负责下层控件的测量和绘制,并传递交互事件.我们经常在Activity看到如下的代码:

Button btn = (Button)findViewById(R.id.btn);

通常情况下,就是在View树中按照深度优先遍历算法查找到该View.

上面我们介绍了View树,接下来我们对照View树引入Android界面架构,在Android中,每一个Activity都包含一个Window对象,在Android中Window对象通常由PhoneWindow实现,PhoneWindow将一个DecorView设置成整个应用窗口的根View.在显示上,DecorView将整个屏幕分为两部分,TitleView和ContentView,看到ContentView,大家应该懂了吧,我们通常setContentView(R.layout.activity_main)就是设置在这里的,通过上述描述,我们就可以建立一个标准的视图树,如下所示:
这里写图片描述
这里就可以解答我们的一个疑惑,为什么通过requestWindowFeature(Window.FEATURE_NO_TITLE)设置全屏必须在setContentView之前调用了(注意这里只是粗略描述视图树的结构,不同的Android版本对UI的管理不同,大体是一样的).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值