前提:
fragmentation 框架下 所有的地图都显示在fragmeng中
过程:
最初使用的是MapView 项目需求:fragment1中有局部地图,fragment2中有全屏地图,从fragment1中点击局部地图跳转到fragment2中。
问题:
这个时候你会发现,fragment1中的地图会重叠在fragment2中的地图上,只是重叠,没有任何点击或触碰事件,就这么叠在那里。后来有一哥们说 ,这个是GLSurfaceView本身的问题,换成TextureMapView就好了,试了下果然解决了,很开心。 这样,问题来了,在做手机适配时,Android 4.4.2上,打开地图返回后成花屏,或者直接停止运行,各种GL_INVALID_VALUE错误信息。或者“Error during detachFromGLContext (see logcat for details)…”,百度地图论坛里 有人建议将TextureMapView换成MapView。WTF?! 考虑到TextureMapView会慢慢被MapView替代,决定替换成MapView。那么接下来就是要把重叠的问题解决掉。 将含有地图的Fragment替换成Activity后,重叠问题解决了。但是GL_INVALID_VALUE依然没有解决。
解决思路:
会不会是硬件加速器的问题(hardwareAccelerated)?Android 4.0向上默认是开启的,那么将MainActivity的hardwareAccelerated设成false试试。果然,不报错也不cash了。 注意,这里关闭硬件加速器的是地图返回后显示的Activity的硬件加速器 但测试发现在高版本上5.0以上,侧滑动画变卡了,反而低版本上不卡 最后在5.0以上版本将硬件加速器再打开
// window 级 只能打开
// 在5.0 以上开启硬件加速器
if (Build.VERSION .SDK _INT >= 21 ) {
getWindow().setFlags (
WindowManager.LayoutParams .FLAG _HARDWARE_ACCELERATED,
WindowManager.LayoutParams .FLAG _HARDWARE_ACCELERATED)
}
最后:地图开发尽量放在Activity中开发!!!