有没有办法手动清除SupportMapFragment在进行后续glDraw()调用之前绘制的OpenGL缓冲区?
我有一个ActivityGroup,它包含两个不同的嵌入式活动(在给定时间只能在屏幕上显示其中一个)。这是它的布局代码片段。
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/main_header"
android:background="#313131" >
<FrameLayout
android:id="@+id/map_area_one"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
<FrameLayout
android:id="@+id/map_area_two"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
我的ActivityGroup中的两个活动的视图都包含一个SupportMapFragment。 ActivityGroup内的第一个活动(具有较小的SupportMapFragment)首先显示,其视图成为具有id map_area_one的FrameLayout的子项。
当用户按下按钮时,我在ActivityGroup内启动第二个活动(使用较大的SupportMapFragment),其视图将成为具有id map_area_one的FrameLayout的子视图。然后我隐藏了第一个活动的视图。
我遇到的问题是,即使第一个活动的视图不再可见,我仍然可以看到第一个活动的较小的SupportMapFragment(即使我无法与它交互)。我在下面附上了图片。
我得出的结论是,这是因为两个SupportMapFragments都使用相同的OpenGL SurfaceView绘制地图。我很确定由于某种原因,当我隐藏第一个活动时,SupportMapFragment正在绘制的openGL缓冲区未被清除。我说这有两个原因:
用户切换到第二个活动后的屏幕截图。请注意,第一个活动的SupportMapFragment(底部较小的地图条)仍然可见
在我背景应用程序并将其带回前台后的屏幕截图。第一个活动的SupportMapFragment不再可见(它应该是怎样的)。我假设因为当应用程序再次被带到前台时,第二个活动称为glClear()。
任何帮助或建议将不胜感激。 感谢。
答案 0 :(得分:1)
好吧,我至少可以通过在SupportMapFragment的初始时传递某些选项来委托解决问题,关于zIndex:
GoogleMapOptions options = new GoogleMapOptions();
options.zOrderOnTop(true);
fragmentMap = SupportMapFragment.newInstance(options);
我希望这会有所帮助