gpt4 book ai didi

java - Android:从 GLSurfaceView 返回到主要 Activity

转载 作者:行者123 更新时间:2023-11-29 09:08:29 25 4
gpt4 key购买 nike

我不明白我的主要 Activity 和 OpenGL 渲染器之间的流程。

当我的应用程序启动时,用户会看到一个非常漂亮的布局,我用一个“开始渲染”按钮制作了布局。当用户单击该按钮时,他/她将被转移到绘制精美图片的渲染器 View 。然后当图片完成后,我想回到主屏幕(有按钮的那个),但我不知道如何。

我尝试从 GLRenderer 调用 setContentView(R.layout.activity_run),但显然它不起作用。然后我尝试创建一个函数 Run.endRendering(),它是一个静态方法,是从 GLRenderer 内部调用的。 Run.endRendering() 应该调用 setContentView(R.layout.activity_run) 以希望它随后将 View 传输回主屏幕,但由于 R.endRendering() 是一个静态方法,它不能调用setContentView() 的非静态方法。

所以现在我完全迷路了。有人可以阐明这个主题吗?

这些是我的骨架。

主要 Activity :

public class Run extends Activity
{
private GLSurfaceView glSurface;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_run);

// in here I mess with the main layout view the user
// is supposed to see. when he/she clicks on a button
// he/she will be transferred to the opengl view

// on button click:
glSurface = new GLSurfaceView(this);
glSurface.setRenderer(new GLRenderer());

setContentView(glSurface);
}
}

渲染器:

public class GLRenderer implements Renderer
{
// onSurfaceCreated, onDrawFrame, onSurfaceChanged, etc.

// the action happens here. From here I want to return to
// the main activity that created this renderer.
}

最佳答案

您可以做的一件事是让您的 GLSurfaceView 成为该 Activity 布局的一部分。 Activity 的 UI 线程保持运行。在其中创建一个处理程序,它将负责从布局中删除 GLSurfaceView 并显示您的普通非 opengl View 。

Handler mainHandler = new Handler() {
public void handleMessage(Message msg) {
// remove surfaceview from layout and show non-opengl views
}
};

然后您可以将 Activity 的引用(可能使用接口(interface))传递给 GLRenderer。哪个可以调用。

activity.mainHandler.sendMessage(msg)

关于java - Android:从 GLSurfaceView 返回到主要 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com