Android自定义View之Activity页面的组成

《Android自定义View之Activity页面的组成》
《Android Activity——启动过程探索(一)》
《Android Activity——启动过程探索(二)》
《Android Activity——启动过程探索(三)》
《Activity 启动模式及任务栈探究》
《Activity常见问题》

Activity 代表一个窗口,实际上这个窗口并不是 Activity,而是由 一个 继承至Window抽象类的 PhoneWindow 对象mWindow 来表示的,mWindow 是Activity 的成员变量,主要作用就是负责窗口的管理。之所以说是管理窗口的,是因为它并不能将界面展示出来,展现界面是由它管理的 DecorView 对象来完成, 在Activity中我们可以通过getWindow().getDecorView()方法来获取DecorView对象,DecorView 类是 FrameLayout 的子类, 也是整个 View 树的根布局(这里也能说明Android事件的分发是从ViewGroup开始的,如果需要了解更多关于Android事件分发问题,可以浏览《 Android中的事件分发机制》这篇博客)。DecorView 由三部分构成: ActionBar、标题区(标题区根据加载布局的不同,可能会没有)和内容区。

对上图进行说明:

1. 首先是最外层的 Activity,一般我们是继承自 AppCompatActivity,但是 AppCompatActivity 最终也是继承自 Activity 的,所以我们的最外框层,就是 Activity
2. Activity相当于一个框,它包含了Window(实际上是Window的子类PhoneWindow)来管理窗口,Activity其他功能这里不做说明
3. PhoneWindow管理窗口,它包含了DecorView用来渲染和显示内容(包括ActionBar、TitleBar和ContentParent部分)
4.  DecorView是FrameLayout的子类,也是整个视图的根节点,开发者写的布局layout.xml文件最终是被添加到DecorView的ContentParent部分
5.  当在讨论Android事件的分发是从View还是ViewGroup开始时,从DecorView extends FrameLayout extends ViewGroup就能得到Android事件是从ViewGroup开始的(如果需要了解更多关于Android事件分发问题,可以浏览《 Android中的事件分发机制》这篇博客)

源码解析 

注意:源码版本为 Android 10(Api 29),不同Android版本可能有一些差别

setContentView()执行过程

// Activity 中的 setContentView() 方法
public void setCon
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值