相关疑难解决方法(0)

如何将java的AffineTransform映射到android的Matrix?

假设我初始化AffineTransform如下:

AffineTransform af = new AffineTransform(2,3,4,5,6,7);

如何使用android的sdk创建等效的Matrix?

java android

16
推荐指数
2
解决办法
6227
查看次数

Android:获取旋转的OSM映射以填充整个屏幕

我正在开发一个应用程序,它使用OpenStreetMap(OSM)API在离线地图上显示由静态切片组成的各种兴趣点.

我目前正在实现的功能之一是让地图根据手机确定的方位旋转(通过GPS).我能够毫不费力地实现实际旋转,但由于我的代码旋转了整个画布 - 也许是一种相当天真的方法 - 我现在屏幕上有空白的角落,没有新的瓷砖被加载以补偿事实旋转的瓷砖不再填充这些像素.

经过一段谷歌搜索后,我找到了一些关于如何解决这个问题的建议,但到目前为止还没有运气.

Romain Guy先生的一个帖子中,他提到了以下内容:

我过去已经这样做了,它需要创建一个自定义ViewGroup,在dispatchDraw()方法中旋转Canvas.您还需要增加MapView的大小(以便在旋转时绘制足够的像素.)您还需要在dispatchTouchEvent()中旋转触摸事件.或者,如果您使用Android 3.0,您只需调用theMapView.rotate()

根据他对地图轮换的建议,我已经按照建议实现了dispatchDraw()和dispatchTouchEvent(),但是我在提到需要增加MapView大小的部分时遇到了问题?

这是我在XML文件中做的事情,就像在这个线程中建议的那样?

或者,我可以以某种方式覆盖处理我的地图旋转的子类RelativeLayout类中的onMeasure()函数吗?

建议和提示是最受欢迎的.

更新:

为了找到这个问题的可接受的解决方案,我试图改变画布的大小.我们的想法是,如果画布尺寸大于实际屏幕尺寸,我可能会将空白角完全移出屏幕.不幸的是,似乎没有实际的canvas.size()选项; 我找到的最好的是canvas.scale().

使用canvas.scale(),我能够在水平和垂直尺寸上将画布的比例增加2倍.然而,这意味着图像被有效地放大,导致对地图图块的不可接受的像素化.

有谁知道画布的大小在哪里声明,如果改变画布的大小可能实际上解决了我的问题?

layout android openstreetmap

9
推荐指数
1
解决办法
1903
查看次数

标签 统计

android ×2

java ×1

layout ×1

openstreetmap ×1