示例展示如何在Android Fragment 中加载地图组件,并且如何合理的管理生命周期。
核心类/接口
暂无
示例中的地图用采用TextureMapView,TextureMapView可以有效实现Fragment切换动画效果。
Fragment切换时采用replace()方法,也可以采用hide()/show()方法。如果采用hide()/show()方法切换,地图是叠在一起的,GlSurfaceView叠放会出现穿透现象,建议使用TextureMapView避免这个问题。同时,采用TextureMapView,也可以避免Fragment切换动画时出现的黑边问题,或者是replace时有黑屏闪一下的问题。
MapView和TextureMapView的区别是:TextureMapView由TextureView实现,而MapView是通过GLSurfaceView实现的。
小建议:由于MapView的效率较高,在平常的地图使用中,建议您还是使用MapView。如果对页面切换动画等要求较高可以考虑采用Fragment实现。
Fragment生命周期方法重写:
/**
* 方法必须重写
*/
@Override
public void onResume() {
super.onResume();
textureMapView.onResume();
}
/**
* 方法必须重写
*/
@Override
public void onPause() {
super.onPause();
textureMapView.onPause();
}
/**
* 方法必须重写
*/
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
textureMapView.onSaveInstanceState(outState);
}
/**
* 方法必须重写
*/
@Override
public void onDestroy() {
setCameraPosition(aMap.getCameraPosition());//保存地图状态
super.onDestroy();
textureMapView.onDestroy();
}