我正在写一个Android应用程序,其中一个功能是地图将根据指南针旋转(即,如果手机指向东方,地图将被定向,以便地图的东侧在顶部)。我之前发现的答案建议在mapView中编写onDraw()方法,但是,api将该方法更改为final,因此它不能被覆盖。因此,我尝试覆盖dispatchDraw()
方法,如下所示:
注意:
-compass是一个布尔值,如果为true,则旋转视图
-bearing是一个浮点变量,它具有视图应旋转的度数
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();
}
https://stackoverflow.com/questions/1830391
复制相似问题