Activity显示界面——说说View的那些理不清的关系,这份333页关于性能优化知识点的PDF你不能不看

就是这样,小弟DecorView就被创建出来了,然后就该小弟工作了。

上文说过,小弟DecorView被创建出来是要干啥的?

要根据不同的主题设置不同的布局结构,这个工作就发生在generateLayout方法中了,具体咱今天就不分析了。

看似小弟的工作也完成了?

等等,应用自己的布局还没加载呢嘛,重要的事情还没开始做呢。

再回到上面的setContentView方法中,在调用installDecor方法创建了小弟之后,还做了一件事:

//加载xml布局文件

mLayoutInflater.inflate(layoutResID, mContentParent);

public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {

final Resources res = getContext().getResources();

final XmlResourceParser parser = res.getLayout(resource);

try {

return inflate(parser, root, attachToRoot);

} finally {

parser.close();

}

}

而这个inflate就是我们熟知的加载布局文件的方法。传入x

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享

ml布局文件,解析并结合我们传入的父view——mContentParent,将其转化为一个完整的树结构,最后返回顶层的View。

到这里,setContentView的工作算是完成了,

简单的说,就是创建了小弟DecorView,并且结合这个顶层的view和我们传入的xml布局文件,生成了一个多层结构的View。

显示出这个View(ViewRootImpl)

=======================

View有了,结构也定下来了。接下来就是怎么显示出这个View结构,让我们的手机展示出画面?

没错,就是绘制。

关于View的绘制工作交给谁做比较好呢?回忆下现在的成员:

  • 小爱Activity:大老板,负责统筹即可。

  • 窗管家PhoneWindow:负责管理各个View。

  • 小弟DecorView:最顶层的View,负责展示主题布局。

好像没有人选可以负责View绘制了&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值