2012-08-13 138 views

回答

15

从Android文档 - protected void dispatchDraw (Canvas canvas)

通过抽签调用,以绘制子视图。这可能会被派生类重写,以便在子对象被绘制之前获得控制权(但在绘制自己的视图之后)。

+0

为什么dispatchDraw(画布画布)?我们可以使用onDraw(Canvas canvas)来代替吗? – 2012-08-13 05:31:32

+4

这是你应该做你的绘画,是的。 '画(帆布帆布)'启动绘画; 'onDraw(画布画布)'是绘画发生的地方; 'dispatchDraw(Canvas canvas)'是告诉孩子ViewGroup'被绘制。 – Eric 2012-08-13 05:33:42

2

例如,ViewGroup是Linear-,Relative-,FrameLayout-,AbsoluteLayout的父项。 1

由于ViewGroup类是抽象的,因此不可能直接创建实例。
可以使用1此,用功能:

dispatchDraw(Canvas canvas) 

不知道什么原因,类1不会与

onDraw(Canvas canvas) 

dispatchDraw(Canvas canvas) 

在绘图画这个类1,可能和创建UI的乐趣。

它应该是这样的:

///// 公共类MainActi扩展MyLinearLayout。 公共MainActi(上下文CON ... 超(续...) MyLinearLayout扩展的LinearLayout

@覆盖保护无效dispatchDraw(帆布油画){ canvas.drawColor(Color.YELLOW); ... ///

或者你跳回来

onDraw(Canvas canvas) 

MainActivity“查看”延长或在这样的的extern类是指它来绘制:

MyMelIsDrawing extends View 
    onDraw(Canvas canvas) 
     //now draw...