我试图在用户按下菜单按钮(暂停游戏)时出现一个暂停菜单。游戏确实成功暂停,但没有绘制任何东西......也许它在我的 GLSurfaceView 下方绘制?这是我的代码。
public class GameActivity extends Activity {
private GLSurfaceView mGLSurfaceView;
private static final String TAG = "Game";
private MainGamePanel mGame;
private View mPauseMessage = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = getSharedPreferences("GameSettings", MODE_PRIVATE);
setContentView(R.layout.main);
mGLSurfaceView = (GLSurfaceView) findViewById(R.id.glsurfaceview);
mPauseMessage = findViewById(R.id.pausedMessage);
mGLSurfaceView.setEGLConfigChooser(false); // 16 bit, no z-buffer
mGame = new MainGamePanel();
mGame.setSurfaceView(mGLSurfaceView);
....
mGLSurfaceView.setRenderer(mGame.getRenderer());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = true;
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (mGame.isPaused()) {
this.resume();
if (mPauseMessage != null) {
mPauseMessage.setVisibility(View.GONE);
}
} else {
this.pause();
if (mPauseMessage != null) {
mPauseMessage.setVisibility(View.VISIBLE);
}
}
}
return result;
}
protected void pause() {
super.onPause();
mGame.onPause();
mGLSurfaceView.onPause();
}
protected void resume() {
super.onResume();
mGame.onResume();
mGLSurfaceView.onResume();
}
从我的 XML 中:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<android.opengl.GLSurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/glsurfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<LinearLayout
android:id="@+id/pauseMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone">
<ImageView
android:id="@+id/pausedMessage"
android:src="@drawable/pause"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
</FrameLayout>
最佳答案
也许你在某处有一句台词说:
mGLSurfaceView.setZOrderOnTop(true);
它会覆盖 OpenGL 以在任何内容之上绘制,即使您在 RelativeLayout 中有其他 View 在其之上也是如此。如果有,请尝试将其注释掉。
否则你可以试试这个:(谢谢 user2610335)
mGLSurfaceView.setZOrderOnTop(false)
关于android - View 未绘制在 GLSurfaceView 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416434/