代码改变世界

[Android学习笔记]View的draw过程学习

2014-04-19 18:50  hellenism  阅读(472)  评论(0)    收藏  举报

View从创建到显示到屏幕需要经历几个过程:

measure -> layout -> draw

measure过程:计算view所占屏幕大小
layout过程:设置view在屏幕的位置
draw过程:绘制view


 


继承自view的控件的draw过程


draw方法是由viewRoot对象的performTraversale()方法调用的


draw方法中做了一下几个事:
1.绘制view的背景
2.为绘制渐变做准备
3.回调onDraw()方法
4.调用dispatchDraw()方法
5.绘制渐变框


与draw有关的几个方法:
invalidate()方法
请求重新绘制view树,但是只绘制需要绘制的部分

 

requestLayout()方法
请求布局,调用此方法会导致调用measure过程和layout过程,但是不会调用draw过程

 

requestFocus()
请求调用view树的draw过程


 

View的绘制过程回调方法调用次数:

onMeasure -> onLayout -> onMeasure -> onLayout -> onDraw -> 显示屏幕

onMeasure和onLayout会被调用两次