View生命周期流程图

分类:

1. 可见性设置Visibility之后的创建销毁流程

2. 可见性设置Gone之后的创建销毁流程

3. 可见性设置Invisibility之后的创建销毁流程

4. 可见性Visibility下获得失去焦点

5. 可见性Gone下获得失去焦点

创建和销毁流程设置可见性区别:

visibility和Invisibitlity差距只有invisibility不需要绘制view(ondraw)
visibitlity和gone差距是gone不需要测量大小(onmeasure)、不需要给子类分配尺寸(onlayout)、不需要绘制view(ondraw)
Invisibility和gone的差距是gone不需要测量大小(onmeasure)、不需要给子类分配尺寸(onlayout)

可见性设置Visibility之后的创建销毁流程:

xml创建
new创建
xml创建
创建
创建
创建
创建
创建
创建
创建
创建
创建
销毁
销毁
销毁
销毁
构造方法
xml创建执行onFinishInflate方法
添加到window上onAttachedToWindow方法
改变window可见性onWindowVisibilityChanged方法
改变view可见性onVisibilityChanged方法
测量大小onMeasure方法
确定自己的位置layout方法
尺寸发生改变onSizeChanged方法
为子类分配尺寸和位置onLayout方法
呈现内容onDraw方法
window获得焦点onWindowFocusChanged方法
创建结束
从window上移除onDetachedFromWindow方法

可见性设置Gone之后的创建销毁流程:

xml创建
new创建
xml创建
创建
创建
创建
创建
销毁
销毁
销毁
销毁
构造方法
xml创建执行onFinishInflate方法
添加到window上onAttachedToWindow方法
改变window可见性onWindowVisibilityChanged方法
改变view可见性onVisibilityChanged方法
window获得焦点onWindowFocusChanged方法
创建结束
从window上移除onDetachedFromWindow方法

可见性设置Invisibility之后的创建销毁流程:

xml创建
new创建
xml创建
创建
创建
创建
创建
创建
创建
创建
创建
销毁
销毁
销毁
销毁
构造方法
xml创建执行onFinishInflate方法
添加到window上onAttachedToWindow方法
改变window可见性onWindowVisibilityChanged方法
改变view可见性onVisibilityChanged方法
测量大小onMeasure方法
确定自己的位置layout方法
尺寸发生改变onSizeChanged方法
为子类分配尺寸和位置onLayout方法
window获得焦点onWindowFocusChanged方法
创建结束
从window上移除onDetachedFromWindow方法

可见性Visibility/InVisibility下获得失去焦点:

失去
失去
失去
失去
获取
获取
获取
获取
获取
有焦点
onWindowFocusChanged
onWindowVisibilityChanged
onVisibilityChanged
无焦点
onDraw

可见性Gone下获得失去焦点:

失去
失去
失去
失去
获取
获取
获取
获取
有焦点
onWindowFocusChanged
onWindowVisibilityChanged
onVisibilityChanged
无焦点

你可能感兴趣的:(自定义view)