onDraw() - 我必须首先清除画布吗?

时间:2013-12-05 17:34:01

标签: android

我创建了一个要在操作栏中显示的自定义视图。它主要是有效的,除了有时在开始我看到我绘制的任何镜像副本。副本与原始副本重叠,但距离几个像素。

我的onDraw()覆盖非常简单。它只是绘制一个以画布为中心的图像。

我有点困惑。我是否希望先在onDraw()方法中清除画布?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这很令人困惑,但您会注意到自定义视图示例(sdk附带),onDraw() method首先调用canvas.drawColor()

我认为它不是自动完成的,因为在你绘制的内容无论如何都会填满整个视图的情况下会浪费。我希望更清楚的是,在大多数情况下这是必要的。

答案 1 :(得分:0)

以下是我发现其他人可能觉得有用的内容。如果使用setBackground()设置背景,框架实际上会在调用onDraw()之前绘制背景。此背景绘制在中心。我也是在onDraw()中绘制背景但我从左上角绘制它。因此,我看到了鬼影。

正如Krylez所说,你可能希望将drawColor()作为你在onDraw()中的第一个调用。

我所做的是覆盖setBackground()及其变体,并将背景位图存储在局部变量中。

的问候,
彼得