作者:波澜步惊
链接:https://www.jianshu.com/p/04dd0627fdee
前言
学习源码,研究源码编程思想,是程序开发者进阶的必经之路。然而,进了源码世界,就像是进了迷失森林,没有地图,迟早要死在里面。有个地图会好很多。
此类文集,专门用图解编程的方式,来讲解一个知识点,从一个点切入,理解切入点之后,再进行知识发散。
路漫漫,进阶之路不好走。与众君共勉之。
高级自定义viwe系列思维脑图;
正文
setContentView到底做了什么?让我们xml里写的View标签能够展示到手机上!
总结
Activity的View结构 为:
Activity
-->PhoneWindow
-->DecorView
-->(TitleView
/ContentView
);
所以,通过说人话
解释上面发生的一切就是:
setContentView
主要做了两件事。
1)获取一个树根rootView
:这个树根其实就是Activity
的结构中DecorView
里面那个id
为content
的view
. 所以这个setContentView
是有道理的····
2)由LayoutInflater
将int
值的resId
,转化成XmlPullParse
对象(它其实是把xml
变成了内存中的xml解析对象),再通过反射,创建出View
对象。这一步用到了上一步获得的树根`rootView。
所以,这一步的结果,直接就是将XML中配置的
view
,直接附加到了树根rootView
上,所以我们才能在app
运行时看到xml中定义的控件了!
网友评论