view获取高度在onCreate和onResume失败的原因(view绘制流程浅谈)

问题如下图


代码编写
打印结果

分析:在onCreate和onResume中获取宽度失败,大胆猜测就是在这两个生命周期的时候还未进行测量Measure的操作,因为宽高是测量出来的

首先看setContentView做了什么操作,如下图


setContentView源码


源码


系统资源默认加载的布局

如上,setContentView只是进行了布局的加载操作 没有做如何的测量,


最终加载完布局的简图(上面代码实现的成果)


所以还得往下Look,现在开始往生命周期看 看什么时候执行View.measure()

现在看从Activity生命周期入手,如下:


生命周期onCreate执行流程
生命周期onResume执行流程,
ViewRootImpl源码
测量的函数


综上:view的绘制是在OnResume之后执行的,所以回到最开始的问题,在onCreate肯定得不到view的宽度,在OnResum可能得不到,那的看自己执行的时机,有没有测量完成。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容