有办法做到这一点吗?我是opengl-es的新手。我无法找到任何有关如何在简单的glsurfaceview中添加广告的信息。
答案 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视图上即可正确呈现。