原文:https://blog.csdn.net/SEU_Calvin/article/details/72855537
我觉得写得很好,有几个方法我之前用过,但是仅限于用过
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0.构造器
除了构造器之外,还有读取项目了相应的attr信息
1.onFinsihInflate
当view 及其xml文件中加载完成之后触发的调用
2.onVisbilityChanged
在当前view及上级view可见性发生变化是调用
3.onAttachedTowindow
当view被附着到一个窗口时触发,在onResume之后调用
4.onMeasure
测量view 的大小
5.onsizechanged
在measure方法之后且测量大小与之前不一样的时候被调用
6.onLayout
为子view分配位置时调用
7.ondraw
渲染本view的内容
8.onWindowFoucusChanged
该方法也可能在绘制过程中被调用,具体是在包含当前View的Window获得或失去焦点时被调用。此时可以设置代码中定义的View的一些LayoutParameter。
如果View进入了销毁阶段,肯定是会被调用的。
9.onWindowVisibilityChanged
该方法同上,具体是在包含当前View的Window可见性改变时被调用。
10.onDetachedFromWindow
当View离开附着的窗口时触发,比如在Activity调用onDestroy方法时View就会离开窗口。和一开始的AttachedToWindow相对,都只会被调用一次。
总结
Activity在setContentView 之后,会从xml读取view并初始化,加载完成之后会调用onFinishInflate,当Activity执行到onResume的时候View才会被添加到窗口中并执行onAttachToWindow,随后执行onMeasure、onSizeChanged、onLayout、onDraw操作,这几个方法会被view的刷新及Activity的生命周期所影响,导致会执行多次。最后在页面被销毁的时候onDetachedFromWindow被调用