Window,Activity,DecorView,ViewRootImpl之间的关系

Activity

不负责控制视图,只是控制生命周期和处理事件,真正控制视图的是Window,Activity中含有一个Window,Window才是真正代表一个窗口

Window

视图的承载器,内部持有DecorView,而DecorView是View的根布局,Window是一个抽象类,真正的实现类是PhoneWindow,PhoneWindow有个内部类DecorView,通过其来加载R.layout.activity_main。Window通过WindowManager将DecorView加载其中,并将DecorView交给ViewRoot,进行视图的绘制及其他交互

DecorView

是FrameLayout的子类,是android的根视图,相当于顶级View,一般来说内部包含竖直方向LinearLayout,在linearlayout中含有三部分,上面是ViewStub,延迟加载的视图,中间是标题栏,下面是内容栏,就是我们熟悉的android.R.id.content

ViewRoot

所有View的绘制及事件分发交互都是通过它来进行的,有个真正的实现类ViewRootImpl,它是链接WindowManagerService和DecorView的纽带,View的测量,布局,绘制都是通过它来实现的,所以我们常见的事件分发真正的过程是

硬件->ViewRootImpl->DecorView->PhoneWindow->Activity->ViewGroup->View

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值