Activity中view的加载

本文详细阐述了Android Activity中View的加载过程,从Activity启动时创建PhoneWindow,到通过LayoutInflater将布局填充到DecorView,再到DecorView如何通过WindowManagerService添加到窗口并进行绘制。此外,还介绍了DecorView作为所有视图控件的根View,其结构包含标题和内容部分,并强调了setContentView方法在其中的作用。最后,文章提到了Activity的生命周期以及DecorView在事件处理中的重要性。
摘要由CSDN通过智能技术生成

加载过程:
1. 在Activity启动时,在其attach方法中会创建一个关联的PhoneWindow窗口对象,然后activity的setContentView把视图布局传递给PhoneWindow的setContentView,在该方法会创建最顶层视图DecorView,DecorView是一个继承了FrameLayout的ViewGroup,代表了整个应用的界面,通常情况下包含标题和内容两个部分
2. PhoneWindow的setContentView方法的参数代表了用户实现的view,该view会通过LayoutInflater的inflate填充到DecorView的内容中,也就是说,把我们提供的xm布局代表的view放到了DecorView中,这就完成了view的加载

绘制过程:

3. 通过WindowManagerService把DecorView添加到PhoneWindow窗口对象中,作为窗口的顶级view,由ViewRootImpl的performTraverals方法对view进行测量,布局,绘制这三个过程,最终让加载的view显示出来。

Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等, 并维护应用程序的生命周期。每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View(DecorView)对象,用来描述应用程序窗口的视图。应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值