同时拥有多个内容视图?

时间:2014-12-04 05:08:12

标签: android ads glsurfaceview

好吧,所以这个概念看起来很简单,但已经在网上搜索过,还没有找到解决方案。所以我正在制作我的第一款Android游戏,Woot。但我希望通过广告将其货币化。这就是问题所在。由于我没有使用我的游戏布局,而是使用GLSurfaceView,我找不到任何关于设置广告的内容。谷歌的每个广告教程都使用布局,或者要求您通过java创建布局。问题是,那些仍然使用SurfaceView,而不是GLSurfaceView。如何通过GLSurfaceView实施广告?我的意思是,大多数游戏,逻辑上都是用openGL制作的,而不是画布,所以必须有一种方法,对吧? 任何建议都会有帮助。如果你们需要看一些代码,请告诉我,但这是glSurfaceView教程中非常标准的代码。

3 个答案:

答案 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);