dispatchDraw(Canvas画布)的使用

Posted

技术标签:

【中文标题】dispatchDraw(Canvas画布)的使用【英文标题】:Use of dispatchDraw(Canvas canvas) 【发布时间】:2012-08-09 08:15:15 【问题描述】:

ViewGroup类中的dispatchDraw(Canvas canvas)方法有什么用??

【问题讨论】:

【参考方案1】:

来自 android 文档 - protected void dispatchDraw (Canvas canvas)

由 draw 调用以绘制子视图。这可能会被派生类覆盖,以便在绘制其子级之前(但在绘制其自己的视图之后)获得控制。

【讨论】:

那是你应该画的地方,是的。 draw(Canvas canvas) 发起绘制; onDraw(Canvas canvas) 是绘图的地方; dispatchDraw(Canvas canvas) 是告诉 ViewGroup 的孩子被绘制。【参考方案2】:

例如,ViewGroup 是 Linear-、Relative-、FrameLayout-、AbsoluteLayout 的 Parent。 1

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

dispatchDraw(Canvas canvas) 

由于未知原因,第 1 类无法使用

onDraw(Canvas canvas) 

绘图

dispatchDraw(Canvas canvas) 

可能属于第 1 类,创建 UI 很有趣。

看起来像这样:

/////

public class MainActi extends MyLinearLayout. 
public MainActi(Context con...
super(cont...)
MyLinearLayout extends LinearLayout 

@Override protected void dispatchDraw(Canvas canvas) 
canvas.drawColor(Color.YELLOW);

... ///

或者你跳回用

onDraw(Canvas canvas) 

MainActivity“视图”中扩展或在外部类中引用它,如下所示:

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

【讨论】:

请修正这个英文

以上是关于dispatchDraw(Canvas画布)的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android 更新视图函数ondraw() 和dispatchdraw()的区别

如何在固定的canvas画布内缩放

Canvas清除画布的3种方法

新手用canvas画布画啥比较好

画布Canvas的使用方法

vue中判断canvas画布是不是为空