【发布时间】:2013-01-03 09:06:05
【问题描述】:
我正在尝试实现新的 Android Google Maps API (v2)。然而,SlidingMenu 似乎并不顺利。如您所知,MapFragment 的实现基于SurfaceView。问题是SurfaceView 不喜欢移动它——我的意思是把它放在可移动的视图中:
-
ViewPager, -
ScrollView, -
ListView, - 或前面提到的
SlidingMenu。
当你移动它时,它会在它最初放置像素的地方留下一个黑洞。它看起来像this。
可以通过在SurfaceView 上指定透明背景,甚至在其上放置透明View 来部分解决此问题。我只是想不出结果是否仅对我来说是不可接受的,或者我是否有不同的问题使它看起来像它的样子。
要查看它的外观,请观看THIS VIDEO。
(对不起质量问题,但问题很容易看出)
在打开SlidingMenu 时拉开普通列表视图(橙色屏幕)时,动画流畅美观。但是一旦出现MapFragment,地图上就会出现一些奇怪的刷新/闪烁/同步问题。
在 HTC One S 和三星 Galaxy ACE 上测试。
解决这个问题的超级疯狂想法:每次开场动画开始时,截取
Taking screenshot of a map isn't possible,但也许有人会从中得到启发。MapFragment的屏幕截图(使用SurfaceView应该可以)并在动画期间将其覆盖.但我真的不知道该怎么做......
或者也许以其他方式禁用重绘地图,我不知道。
更新:
找到this。
看来 SurfaceView 可以更改为 TextureView 以消除这些限制。但是由于MapFragment是基于SurfaceView的,不知道能不能实现。
另一个更新 看来这个问题已在设备 4.1+ 上得到解决。他们只是使用了 TextureView。但在较低版本上,我们仍然必须使用变通方法。
【问题讨论】:
-
地图将在滑动时继续处理命令和动画。这是一个很好的用户体验。在地图滑动时截屏覆盖地图会减损 UX 和 AFAIK,这是不可能的,请参阅 stackoverflow.com/questions/13773658/…
-
stackoverflow.com/a/13910364/1121889 用您的地图 v2 替换 viewpager
-
我没有
ViewPager。另外,我已经阅读了您引用的答案(甚至对此发表了评论)。 -
我在表面视图方面遇到了同样的问题。我已将surfaceView 修改为textureView。我不知道mapfragment是否可以。
-
我认为可以接受。我也认为它最终会被修复。如果在谷歌上点击有问题,我会为你加注星标。
标签: android surfaceview android-maps android-maps-v2 mapfragment