Ich schreibe eine Android-App, wo eine der Funktionen ist, dass die Karte entsprechend dem Kompass drehen wird (dh wenn das Telefon nach Osten zeigt, wird die Karte so ausgerichtet, dass die Ostseite der Karte ist oben). Frühere Antworten, die ich gefunden habe, schlagen vor, die onDraw() -Methode in mapView zu schreiben, jedoch hat die API die Methode auf final gesetzt, so dass sie nicht überschrieben werden kann. Als Ergebnis habe ich versucht, wie so die dispatchDraw()
Methode zu überschreiben:Karte in Android drehen
Hinweis:
-Kompass ist ein boolean, dass wenn sie wahr ist, die Ansicht
-substituierte ist eine Variable vom Typ float drehen, die Grade hat dass die Ansicht
protected void dispatchDraw(Canvas canvas) {
canvas.save();
if (compass) {
final float w = this.getWidth();
final float h = this.getHeight();
final float scaleFactor = (float)(Math.sqrt(h * h + w * w)/Math.min(w, h));
final float centerX = w/2.0f;
final float centerY = h/2.0f;
canvas.rotate(bearing, centerX, centerY);
canvas.scale(scaleFactor, scaleFactor, centerX, centerY);
}
super.dispatchDraw(canvas);
canvas.restore();
}
warum tun Sie OnDraw außer Kraft setzen müssen, Sie nicht können animiere den Blick innerhalb deiner Aktivität? – schwiz
@Matthew: hast du Antwort, wenn ja, bitte gib mir Lösung –