Android控件架构和界面架构

Android控件架构

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

 

     控件树:

Android界面的架构图

 

如下图:

   

 

 

如图所示,每个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中,并让其显示出来,从而最终完成界面的绘制。

 

 

 

 

 

 

 

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值