Sto scrivendo un'app per Android in cui una delle caratteristiche è che la mappa ruoterà secondo la bussola (cioè se il telefono punta verso est, la mappa sarà orientata in modo che il lato est della mappa è in cima). Le risposte precedenti che ho trovato suggeriscono sulla scrittura del metodo onDraw() in mapView, tuttavia, l'API ha cambiato il metodo in final in modo che non possa essere sovrascritto. Come risultato ho cercato di sovrascrivere il metodo dispatchDraw()
modo:Ruota MapView in Android
Nota:
-compass è un booleano che, se vero, ruotare la vista
-bearing è una variabile float che ha gradi che la vista deve ruotare
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();
}
perché avete bisogno di ignorare OnDraw, può non solo animare la vista all'interno della tua attività? – schwiz
@Matthew: hai una risposta, se sì per favore dammi una soluzione –