Android将广告(admob)添加到OPENGL-ES屏幕

时间:2011-03-14 14:54:03

标签: android opengl-es

有办法做到这一点吗?我是opengl-es的新手。我无法找到任何有关如何在简单的glsurfaceview中添加广告的信息。

3 个答案:

答案 0 :(得分:5)

您根本不需要在OpenGL表面上自行绘制广告,只需将一些布局设置为您的活动作为内容视图,并将广告和曲面添加到布局中。

如果您不介意广告将覆盖您的表面,则可以使用 FrameLayout ;如果您需要专用区域,则可以使用 RelativeLayout 顶部,但请确保在广告下方放置一些漂亮的横幅,以避免在没有网络连接的情况下显示黑框。

我们通过 Adwhirl 使用Admob,因此在我们的案例中,它看起来如下所示。我从未直接使用过Admob,但我想它应该是非常相似的东西。

<强> main.xml中

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
</FrameLayout>

<强> YourActivity.java

FrameLayout layout = (FrameLayout) findViewById(R.id.layout_main);

GLSurfaceView surface = ...
FrameLayout.LayoutParams surfaceParams = new FrameLayout.LayoutParams(...);
layout.addView(surface, surfaceParams);

AWhirlLayout adWhirlLayout = ...
FrameLayout.LayoutParams adsParams = new FrameLayout.LayoutParams(...);
mainLayout.addView(adWhirlLayout, adsParams);

答案 1 :(得分:4)

谢谢,我的解决方案是:

init.xml 布局

<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:myapp = "http://schemas.android.com/apk/res/com.lacroix.start"
android:orientation = "vertical" android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
>

    <android.opengl.GLSurfaceView android:id="@+id/glSurface" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:layout_gravity="top|left"/>

    <com.admob.android.ads.AdView android:id = "@+id/ad" android:layout_width = "fill_parent" 
    android:layout_height = "wrap_content" android:layout_alignParentRight="true" 
    myapp:backgroundColor = "#000000" myapp:primaryTextColor = "#FFFFFF" 
    myapp:secondaryTextColor = "#CCCCCC" myapp:keywords = "Android game" />


</FrameLayout>

然后 Start.java 活动onCreate

  setContentView (R.layout.init);

    adview = (AdView) this.findViewById(R.id.ad);
    adview.setVisibility(AdView.VISIBLE);
    adview.requestFreshAd (); 

    view            = (GLSurfaceView) this.findViewById (R.id.glSurface); 
    renderer        = new OpenGLRenderer(this);
    view.setRenderer(renderer);

答案 2 :(得分:0)

喂!好吧,我不熟悉admob,但我想你可以通过将广告呈现为图像并将该图像添加到OpenGL并使用OpenGL渲染该图像来实现。因为向OpenGL添加图像是一项繁重的任务,所以我不建议每一帧都这样做,只要你确定它不会导致任何问题。 或者,如果您只需要将广告放在OpenGL表面之上,您只需将广告的视图放在OpenGL视图上即可正确呈现。