0

我正在浏览一个使用 ItemizedOverlay 的示例。draw 方法被覆盖如下:

public void draw(Canvas canvas, MapView mapView, boolean shadow) {
    shadow = false;
    super.draw(canvas, mapView, shadow);
}

在示例中,正在调用 populate(),而后者又调用 size() 和 createItem(int i)。

但是我的问题是,上面提到的draw方法是谁调用的,又是怎么调用的呢?特别是,调用者如何知道将哪个 MapView 对象作为参数传递?

4

1 回答 1

0

上面提到的draw方法是谁调用的,怎么调用的?

invalidate()方法强制视图绘制,这是在 View 类中实现的,每当您需要绘制视图时,您或系统都会调用 invalidate。

当您创建一个扩展覆盖的私有内部类时,覆盖了draw method几个参数。

  • 第一个参数是 Canvas 实例的句柄,我们将使用它来绘制标记。

  • 第二个是显示此叠加层的 MapView 实例。

  • 第三个参数是一个布尔值,指示我们绘制的是实际图像还是阴影。

事实上,这个方法被调用了两次。一次绘制阴影,一次绘制您想要绘制的实际事物。

以下是对您有帮助的几个链接

Android 如何绘制视图

在 MapView 上绘制多个位置标记

类叠加

于 2013-01-04T05:14:11.273 回答