(二)自定义View之组件的绘制流程

1.测量组件的大小,重写onMeasure方法。注意,如果测试的组件是容器,而容器的大小又依赖于子组件的大小,需要先测量子组件的大小,否则测量出来的结果永远都是0.

2.如果组件为容器时,重写onLayout方法,负责定位子组件的位置。这其实是一个递归的过程,如果子组件也是容器,同样需要重写onLayout方法定位其子组件的位置,直到每一个组件都定位完成为止。

3.组件绘制,重写onDraw方法,组件不仅需要绘制自身,还需要绘制背景,进度条。容器组件一般不需要绘制,但需要重写dispatchDraw方法绘制子组件。以ViewGroup为例,ViewGroup完全复用父类View的draw方法,draw方法主要做了以下四件事:a:绘制背景,background.draw(canvas)。b:onDraw(canvas)绘制自己。c:绘制进度条,onDrawScrollBar(canvas);d:绘制子视图,dispatchDraw(canvas)。ViewGroup重写了dispatchDraw方法绘制其子组件。

总结:继承View的组件需要重写onMeasure,onDraw,继承ViewGroup的组件需要重写onMeasure,onLayout,dispatchDraw方法

你可能感兴趣的:((二)自定义View之组件的绘制流程)