Android -- View流程
16lz
2021-01-23
在自定义view中打log,view的显示共有三种,visible、invisible和gone,分别看一下log:
gone
onVisibilityChangedconstruct 2 parametersonFinishInflateonVisibilityChangedonVisibilityChangedonRtlPropertiesChangedonRtlPropertiesChangedonAttachedToWindowonWindowVisibilityChangedonWindowFocusChanged
invisible
onVisibilityChangedconstruct 2 parameters .onFinishInflateonVisibilityChangedonVisibilityChangedonRtlPropertiesChangedonRtlPropertiesChangedonAttachedToWindowonWindowVisibilityChangedonMeasure , width : 1080 ; height: 1557onMeasure , width : 144 ; height: 1500onSizeChangedonLayout --> l: 0 ; r : 144 ; t: 57 ; b: 201 : changed :trueonMeasure , width : 1080 ; height: 1557onMeasure , width : 144 ; height: 1500onLayout --> l: 0 ; r : 144 ; t: 57 ; b: 201 : changed :falseonWindowFocusChanged
visible
construct 2 parameters .onFinishInflateonVisibilityChangedonVisibilityChangedonRtlPropertiesChangedonRtlPropertiesChangedonAttachedToWindowonWindowVisibilityChangedonMeasure , width : 1080 ; height: 1557onMeasure , width : 144 ; height: 1500onSizeChangedonLayout --> l: 0 ; r : 144 ; t: 57 ; b: 201 : changed :trueonMeasure , width : 1080 ; height: 1557onMeasure , width : 144 ; height: 1500onLayout --> l: 0 ; r : 144 ; t: 57 ; b: 201 : changed :falseonDrawonWindowFocusChanged
1、从中看到view默认为可见的,不是默认值时先调用 onVisibilityChanged ,但是此时该view的任何位置信息都不知道。
2、可见性改变后才是调用带有两个参数的构造函数
3、从xml 文件中 inflate 完成
4、将view 加到 window 中(View 是gone 的,那么View创建生命周期也就结束)
5、测量view的长宽(onMeasure)
6、定位View在父View中的位置(onLayout)--->(View 是invisible ,View 创建生命周期结束)
7、onDraw(只有可见的View 才在window 中绘制)
setContentView(new View(this))
construct 1 parameteronVisibilityChangedonVisibilityChangedonRtlPropertiesChangedonRtlPropertiesChangedonAttachedToWindowonWindowVisibilityChangedonMeasure , width : 1080 ; height: 1557onSizeChangedonLayout --> l: 0 ; r : 1080 ; t: 0 ; b: 1557 : changed :trueonMeasure , width : 1080 ; height: 1557onLayout --> l: 0 ; r : 1080 ; t: 0 ; b: 1557 : changed :falseonDrawonWindowFocusChanged
默认情况下view的长和宽默认和父view的长和宽一致。
销毁
onWindowFocusChanged
onWindowVisibilityChanged
onDetachedFromWindow
总结
View 的关键生命周期为
构造View --> onFinishInflate --> onAttachedToWindow --> onMeasure --> onSizeChanged --> onLayout --> onDraw --> onDetackedFromWindow
我是天王盖地虎的分割线
更多相关文章
- android fragment的显示隐藏生命周期简述
- Android通用生命周期
- Android ProgressBar 自定义样式(六),仿真QQ pad版加载(位置居中)
- 利用浏览器默认方法获取浏览器当前位置
- Android之ScrollView滚动到指定位置
- Android Studio中添加Permission权限的步骤与位置
- Android 代码当中动态改变某个控件的位置
- Android EditText插入字符串到光标所在位置和删除
- 【原创】Android 设置Dialog的长宽和位置