Android: пользовательское изображение компаса только частично перерисовывается - PullRequest
0 голосов
/ 11 октября 2011

Я хочу нарисовать свое собственное изображение компаса на MapView, создав подкласс MyLocationOverlay. Настраиваемое изображение должно быть больше, чем изображение по умолчанию, отображаемое MyLocationOverlay. Я перезаписываю drawCompass и использую свои собственные рисованные объекты (растровые изображения) для рисования компаса:

@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 устанавливали необходимые границы для объекта canvas? Кажется, я получаю границы, применимые к изображениям по умолчанию.

(drawCompass, кажется, вызывается из MyLocationOverlay.draw () - я могу переопределить это, но все еще не уверен, как изменить ClipBounds на объекте canvas.)

1 Ответ

0 голосов
/ 24 марта 2012

Ваш вопрос заставил меня понять, что проблема с отсечением, которую вы описываете, вызывала странный способ рисования моего собственного компаса.Я нашел ответ здесь:

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

Вам нужно использовать

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

(Для его использования вам нужно будет import android.graphics.Region.)

...