今天,我已经在Android中使用OpenGL ES创建了一个3D对象,并考虑将其显示在其他布局中,例如以xml或其他任何可能的方式显示SurfaceView或FrameLayout。
在下面的代码中,我将GL对象设置为onCreate的setContentView以显示我的对象。如果我要在其他地方显示这个GLSurfaceView我该怎么办?如果我能得到一些提示或示例,那将是很棒的!
GLSurfaceView ourSurface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setting the gl surface view
ourSurface = new GLSurfaceView(this);
ourSurface.setRenderer(new GLCubeRender());
setContentView(ourSurface);
}
答案 0 :(得分:2)
首先,你应该创建一个用构造函数扩展GLSurfaceView的类,如下例所示
package com.ball.views;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.util.AttributeSet;
public class MYGLSurfaceView extends GLSurfaceView {
public MYGLSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
在此之后,您可以在
中创建一个带有自己的GLSurfaceView的xml文件<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.ball.views.MYGLSurfaceView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/GLSurfaceView1" />
</LinearLayout>
然后更改之前发布的代码,以便在视图中设置您创建的xml文件,并从xml文件中获取GLSurfaceView
MYGLSurfaceView ourSurface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_xml_file);
//setting the gl surface view
ourSurface = (MYGLSurfaceView)this.findViewById(R.id.GLSurfaceView1);
ourSurface.setRenderer(new GLCubeRender());
}