首页 > 代码库 > 自定义控件(3):view的绘制原理

自定义控件(3):view的绘制原理

自定义UI控件,需继承 View类或View的子类,并重载View类中的一些方法,不必都重载,但至少要重载onDraw( )。

类别方法描述
CreationConstructors 
onFinishInflate()当View和它的所有子对象从XML中导入之后,调用此方法
LayoutonMeasure(int, int)View会调用此方法,来确认自己及所有子对象的大小
onLayout(boolean, int, int, int, int, int, int)当View要为所有子对象分配大小和位置时,调用此方法
onSizeChanged(int, int, int, int)当View大小改变时,调用此方法
DrawingonDraw(Canvas)当View要绘制它的内容时,调用此方法
Event processingonKeyDown(int, KeyEvent)当一个新的按键事件发生时,调用此方法
onKeyUp(int, KeyEvent)当一个按键释放事件发生时,调用此方法
onMotionEvent(MotionEvent)当一个动作事件(如触摸)发生时,调用此方法
FocusonFocusChanged(boolean, int)当View获得或失去焦点时,调用此方法
AttachingonAttachedToWindow()当View附加到一个窗体上时,调用此方法
onDetachedFromWindow()当View离开它的窗体时,调用此方法

View的绘制过程:onAttachedToWindow -> onMeasrue -> onSizeChanged -> onLayout -> onDraw

Activity中绘制View:通过setContentView( ) 传入层次树的根节点引用 -> Activity被激活并获得焦点 -> 请求根节点计算并绘制树 -> ViewGroup结合自己的有效空间和子View要求的LayoutParams来布局子view,并调用子view的Draw( )方法来绘制之

自定义控件(3):view的绘制原理