我有一个在 GLSurfaceView 上使用 OpenGL 的应用程序。问题是初始加载需要相当长的时间来处理纹理和准备好东西。
我想要做的是在 GLSurfaceView 准备就绪时显示一个简单的 PNG(带有轻微的动画)。准备好渲染后,我想拆除启动画面。
这样做的正确方法是什么?我已经尝试过 ViewFlipper、ViewSwitcher 和其他一些东西来在我的 R.layout.main 视图和我的 GLSurfaceView 之间切换,但我似乎无法做到正确。
有任何想法吗?
我有一个在 GLSurfaceView 上使用 OpenGL 的应用程序。问题是初始加载需要相当长的时间来处理纹理和准备好东西。
我想要做的是在 GLSurfaceView 准备就绪时显示一个简单的 PNG(带有轻微的动画)。准备好渲染后,我想拆除启动画面。
这样做的正确方法是什么?我已经尝试过 ViewFlipper、ViewSwitcher 和其他一些东西来在我的 R.layout.main 视图和我的 GLSurfaceView 之间切换,但我似乎无法做到正确。
有任何想法吗?
步骤#1:让你GLSurfaceView
成为android:visibility="invisible"
你的布局 XML
步骤#2:把它GLSurfaceView
放在一个里面FrameLayout
步骤#3:添加一个ImageView
相同的另一个孩子FrameLayout
步骤#4:当GLSurfaceView
准备就绪时,让ImageView
它们不可见,让GLSurfaceView
它们可见
这是我为克服这种情况所做的事情......
我创建了一个名为 loader.xml 的自定义布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selectLevelID"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/loader"
android:orientation="vertical" >
</RelativeLayout>
之后,我在为 glSurfaceView 创建渲染器时使用了它
public GlRenderer(Context ctx)
{
loader_dialog = new Dialog(context,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
loader_dialog.setContentView(R.layout.loader);
loader_dialog.show()
//do your initializations....
loader_dialog.dismiss();
}
;
或者loader_dialog.dismiss();
在加载所有对象、纹理等后调用...