Android:自定义指南针图片仅部分重绘

时间:2011-10-10 21:44:26

标签: android map mylocationoverlay

我希望通过继承MyLocationOverlay在MapView上绘制我自己的指南针图像。自定义图像需要大于MyLocationOverlay显示的默认图像。我重写drawCompass并使用我自己的drawables(位图)绘制指南针:

@Override
protected void drawCompass(Canvas canvas, float bearing) {

    Rect bounds = canvas.getClipBounds();
    // usual result: bottom=98, left=10, right=90, top=18

    // draw something custom here...

    // Don't want default compass image:        
    //super.drawCompass(canvas, bearing);

}

如何设置自定义图像的边界,以便调用drawCompass在画布对象上设置所需的边界?我得到的界限似乎是那些适用于默认图像的界限。

(drawCompass似乎是从MyLocationOverlay.draw()调用的 - 我可以覆盖它,但我仍然不确定如何更改canvas对象上的ClipBounds。)

1 个答案:

答案 0 :(得分:0)

你的问题让我意识到你描述的剪裁问题导致了我的自定义指南针绘制的奇怪方式。我在这里找到了答案:

http://jtomlinson.blogspot.com/2008/10/clipping.html

您需要使用

   canvas.clipRect(0, 0, newWidth, newHeight, Region.Op.REPLACE);

(要使用它,您需要import android.graphics.Region.