1

对于我的应用程序,我希望将 GLSurfaceView 添加到我的 Fragment Activity 内的可滑动片段之一。我的印象是它们就像普通视图一样工作,导致我尝试以下代码。

public override View OnCreateView(LayoutInflater inflater, 
                                  ViewGroup container, 
                                  Bundle savedInstanceState)
{
    rootView = 
        inflater.Inflate(Resource.Layout.VisualisationFragment, container, false);

    var fragmentLayout = 
        rootView.FindViewById<RelativeLayout>(Resource.Id.fragmentLayout);

    surfaceView = new GLSurfaceView(this.Activity.BaseContext);
    fragmentLayout.AddView(surfaceView);

    return rootView;
}

当我单步执行代码时,代码编译得很好并且看起来很好,直到返回 rootView 之后的某个地方,此时我得到一个“强制关闭”警报,没有例外。GLSurface 视图占据了大部分屏幕,除了顶部的标题和底部的按钮。我已经在我的清单中声明了使用 OpenGL,是否还有其他我遗漏的配置?

我的问题:

是否可以在FragmentActivity 内的 Fragment使用OpenGL ,如果可以,如何将我的 surfaceView 分配给我的 rootView 而不会导致我的应用程序爆炸?

提前致谢。

4

1 回答 1

0

好的,所以我更早地进行了这项工作,但收效甚微,因为它太滞后而无法证明有用。

要修复它,需要渲染器,并且需要从 Java.Lang.Object 以及 IRenderer 继承以允许您实现 Handler 属性。

在每次滑动时销毁和重新创建 GlSurfaceView 证明了太多的处理能力,无法在面板之间保持一致的平滑滑动,即使 OnSurfaceCreate 和 OnSurfaceDestroy 方法为空也是如此。

于 2013-10-30T21:21:11.877 回答