android - 如何清除 SupportMapFragment 绘制到的 glSurfaceView?

标签 android glsurfaceview supportmapfragment mapfragment

问题:

有没有办法在 SupportMapFragment 进行后续 glDraw() 调用之前手动清除 SupportMapFragment 绘制到的 OpenGL 缓冲区?

原因:

我有一个 ActivityGroup,它包含两个不同的嵌入式 Activity (在给定时间只有其中一个可以显示在屏幕上)。这是它的布局代码 fragment 。

<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 中两个 Activity 的 View 都包含一个 SupportMapFragment。 ActivityGroup 中的第一个 Activity (具有较小的 SupportMapFragment)首先显示,它的 View 成为 FrameLayout 的子元素,id 为 map_area_one。

当用户按下按钮时,我在 ActivityGroup 中启动第二个 Activity (具有较大的 SupportMapFragment),它的 View 成为 FrameLayout 的子元素,其 ID 为 map_area_one。然后我隐藏第一个 Activity 的 View 。

我遇到的问题是,即使第一个 Activity 的 View 不再可见,我仍然可以看到第一个 Activity 的较小 SupportMapFragment(即使我无法与其交互)。我在下面附上了图片。

我得出的结论是,这是因为两个 SupportMapFragments 使用相同的 OpenGL SurfaceView 绘制 map 。我很确定,出于某种原因,当我隐藏第一个 Activity 时,SupportMapFragment 正在绘制的 openGL 缓冲区没有被清除。我这样说有两个原因:

  1. 如果我将应用置于后台并将其返回前台,则较小的 SupportMapFragment 将不再可见。
  2. 如果我将较大的 SupportMapFragment 更改为使用 GoogleMaps Android v1 的 MapView,则不会出现此问题。这是因为 GoogleMaps Android v1 没有使用 OpenGL。

图片

用户切换到第二个 Activity 后的屏幕截图。请注意,第一个 Activity 的 SupportMapFragment(这是底部较小的 map 条)仍然可见。



在我将应用程序置于后台并将其带回前台后立即截图。第一个 Activity 的 SupportMapFragment 不再可见(应该是这样)。我假设是因为当应用程序再次被带到前台时,第二个 Activity 调用了 glClear() 。

如有任何帮助或建议,我们将不胜感激。 谢谢。

最佳答案

好吧,我至少可以通过在 SupportMapFragment 的初始时间传递某些选项来委托(delegate)这个问题,关于 zIndex:

GoogleMapOptions options = new GoogleMapOptions();
options.zOrderOnTop(true);
fragmentMap = SupportMapFragment.newInstance(options);

希望对你有帮助

关于android - 如何清除 SupportMapFragment 绘制到的 glSurfaceView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922642/

相关文章:

android - 使用Android上的Google登录进行身份验证会构建它并出错

java - 如何将特定 URL 更改为子 URL

android - Android 上的 "Unknown issue with Google Play Services"

android - 如何在不锁定 UI 线程的情况下快速向 Google Map API v2 中的 MapFragment 添加多个标记?

android - 如何保存Map v2的标记信息,以便可以在单击标记时检索它

Android - 没有滚动条的滚动

java - 每次打开应用程序时,在 Android sdcard0 中动态保存 .text 文件

android - View 未绘制在 GLSurfaceView 之上

android - ViewFlipper中的VideoView在播放视频时是透明的

android - TextureView 与 GLSurfaceView 或如何将 GLSurfaceView 与 EGL14 一起使用