好吧,所以这个概念看起来很简单,但已经在网上搜索过,还没有找到解决方案。所以我正在制作我的第一款Android游戏,Woot。但我希望通过广告将其货币化。这就是问题所在。由于我没有使用我的游戏布局,而是使用GLSurfaceView,我找不到任何关于设置广告的内容。谷歌的每个广告教程都使用布局,或者要求您通过java创建布局。问题是,那些仍然使用SurfaceView,而不是GLSurfaceView。如何通过GLSurfaceView实施广告?我的意思是,大多数游戏,逻辑上都是用openGL制作的,而不是画布,所以必须有一种方法,对吧? 任何建议都会有帮助。如果你们需要看一些代码,请告诉我,但这是glSurfaceView教程中非常标准的代码。
答案 0 :(得分:0)
根据这个manual,您可以测试代码打击:
TextView textView = new TextView(this);
textView.setText("overlay!");
addContentView(textView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
显然,代码在Activity中。
答案 1 :(得分:0)
GLSurfaceView只是一个SurfaceView,其中包含一些代码来管理线程和EGL上下文。他们并没有太大差异。
SurfaceView有两个部分,“表面”和“视图”。视图是View层次结构的一部分,通常只是用于布局的透明窗口。所有基于视图的UI都在单个图层上绘制。 GLES渲染在曲面部分完成,曲面部分是由系统合成的单独层。默认情况下,表面图层位于视图图层后面,但您可以在创建SurfaceView时配置它。
由于Surface位于View后面,因此您可以在游戏中使用“视图”绘制广告,而不会干扰它。
您可以在Grafika中找到一些示例。例如,“记录GL app”活动在GLES动画之上具有UI元素(一些文本和单选按钮)。它使用相对布局并将UI元素定位在SurfaceView的顶部。
答案 2 :(得分:0)
所以我做了很多研究,最后找到了一个有效的解决方案,感谢fadden让我走上了正确的轨道顺便说一下:)
mGLView = new MyGLSurfaceView(this);
LinearLayout screenLayout = new LinearLayout(this);
screenLayout.setOrientation(LinearLayout.VERTICAL);
// Create a banner ad. The ad size and ad unit ID must be set before calling loadAd.
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("/6499/example/banner");
AdRequest.Builder adRequest= new AdRequest.Builder();
adView.loadAd(adRequest.build());
screenLayout.addView(adView);
screenLayout.addView(mGLView);
setContentView(screenLayout);