我看到一些问题可能重复,但我需要问这个问题,因为我还有其他关于我在其他问题上找不到的布局相关代码的问题。
我的活动绑定表面视图
public void onCreate(Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
glView = new GLSurfaceView(this);
glView.setRenderer(this);
layout = new RelativeLayout(this);
layout.addView(glView);
setContentView(layout);
glGraphics = new GLGraphics(glView);
fileIO = new AndroidFileIO(getAssets());
audio = new AndroidAudio(this);
input = new AndroidInput(this, glView, 1,1);
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame");
}
这个课程实际上是我从Mario Zechner的书中获取的,因此OnDrawFrame将负责循环更新和现状,我非常喜欢它并且不想重新创建它,所以我想要用它。唯一的问题是本书只展示了如何使用画布,所有的游戏图像都将画在我不想使用的画布上。我想使用XML布局。从那里设置我的所有图像,按钮等..
我尝试setContentView我的布局,但它会使onDrawFrame()停止,所以我无法获取更新并显示屏幕代码。
最新的,我试过了:
(当我想打开比赛屏幕的某个地方)
myView = getLayoutInflater().inflate(R.layout.match, layout, false);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
params.leftMargin=0;
params.topMargin=0;
layout.addView(myView, params);
onDrawFrame很好,仍在运行,但现在我的布局只显示顶部屏幕的1/4,低于全黑的3/4。是什么造成的?
如何实现我想要的东西,重点是我希望glview仍然存在,但只保留代码(onDrawFrame)运行,而我想显示完整的XML布局..哦,我也试过{{ 1}},我显示了我的布局,但不幸的是,onDrawFrame代码没有运行..
编辑:
最近尝试了这个。但仍然有3/4黑屏...
(在创建时)
glView.setVisibility(View.GONE)
(当我想打开比赛屏幕的某个地方)
glView = new GLSurfaceView(this);
glView.setRenderer(this);
layout = new RelativeLayout(this);
fL = new FrameLayout(this);
fL.addView(glView);
layout.addView(fL);
setContentView(layout);
更新: 跟踪并搜索了几个小时后,现在我知道黑屏是由清除屏幕引起的。现在问题缩小到"如何在glsurfaceview上进行匹配视图?"
答案 0 :(得分:1)
取决于您的代码,但有些代码可以使用此代码:
glView.setZOrderOnTop(true);
glView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glView.getHolder().setFormat(PixelFormat.RGBA_8888);
尝试一下,看看你现在是否可以在glview上看到你的布局。