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

Android onDraw()-我必须先清除画布吗?,android,Android,我已经创建了一个自定义视图,显示在操作栏中。它主要起作用,除了有时一开始我就看到我画的东西的镜像。副本与原始副本重叠,但相差几个像素 我的onDraw()覆盖非常简单。它所做的只是绘制一个位于画布中心的图像 我有点困惑。我是否需要在onDraw()方法中首先清除画布?提前感谢您的帮助。这让人困惑,但您会注意到在自定义视图示例(sdk附带)中,首先调用的是canvas.drawColor() 我认为这不是自动完成的,因为如果您所绘制的内容填充了整个视图,这将是一种浪费。我只希望能更清楚地表明,在大

我已经创建了一个自定义视图,显示在操作栏中。它主要起作用,除了有时一开始我就看到我画的东西的镜像。副本与原始副本重叠,但相差几个像素

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


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

这让人困惑,但您会注意到在自定义视图示例(sdk附带)中,首先调用的是
canvas.drawColor()


我认为这不是自动完成的,因为如果您所绘制的内容填充了整个视图,这将是一种浪费。我只希望能更清楚地表明,在大多数情况下这是必要的。

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

正如Krylez提到的,您可能希望调用drawColor()作为在onDraw()中的第一个调用

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

问候,

彼得

谢谢你。请看我的答案。