高级自定义view系列一:setContentView

作者:波澜步惊
链接:https://www.jianshu.com/p/04dd0627fdee

前言

学习源码,研究源码编程思想,是程序开发者进阶的必经之路。然而,进了源码世界,就像是进了迷失森林,没有地图,迟早要死在里面。有个地图会好很多。
此类文集,专门用图解编程的方式,来讲解一个知识点,从一个点切入,理解切入点之后,再进行知识发散。
路漫漫,进阶之路不好走。与众君共勉之。

 

高级自定义view系列文章,都为学员波澜步惊在学习高级进阶课程的过程中所吸收和思考的知识,尤其对于从事Android开发3-5年,处于瓶颈期需要寻找突破和进阶方向的小伙伴们一定有所启发和帮助的


高级自定义viwe系列思维脑图;

 

正文

setContentView到底做了什么?让我们xml里写的View标签能够展示到手机上!

总结

Activity的View结构 为: Activity--> PhoneWindow-->DecorView-->(TitleView/ContentView);

所以,通过说人话解释上面发生的一切就是:
setContentView主要做了两件事。
1)获取一个树根rootView:这个树根其实就是Activity的结构中DecorView里面那个idcontentview. 所以这个setContentView是有道理的····
2)由LayoutInflaterint值的resId,转化成XmlPullParse对象(它其实是把xml变成了内存中的xml解析对象),再通过反射,创建出View对象。这一步用到了上一步获得的树根`rootView。

所以,这一步的结果,直接就是将XML中配置的view,直接附加到了树根rootView上,所以我们才能在app运行时看到xml中定义的控件了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值