Android добавить рекламу (admob) на экран OPENGL-ES - PullRequest
2 голосов
/ 14 марта 2011

Есть ли способ сделать это? Я новичок в opengl-es. Я не могу найти информацию о том, как добавить объявление в простое glsurfaceview.

Ответы [ 3 ]

5 голосов
/ 15 марта 2011

Вам вообще не нужно рисовать рекламу на своей поверхности OpenGL, просто установите какой-либо макет для своей деятельности в качестве просмотра контента и добавьте объявление и поверхность в макет.

Вы можете использовать FrameLayout , если вы не возражаете, что реклама будет покрывать вашу поверхность, или RelativeLayout , если вам нужна выделенная область, скажем, насверху, но убедитесь, что вы разместили хороший рекламный баннер под рекламой, чтобы избежать появления черного ящика в случае отсутствия сетевого подключения.

Мы используем Admob через Adwhirl , поэтому в нашем случаеэто выглядит примерно так:Я никогда не использовал 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);
4 голосов
/ 16 марта 2011

Спасибо, мое решение было:

init.xml layout

<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);
0 голосов
/ 15 марта 2011

Эй!Ну, я не знаком с admob, но я думаю, что вы можете сделать это путем рендеринга рекламы в изображение, добавления этого изображения в OpenGL и отображения этого изображения в OpenGL.Поскольку добавление изображений в OpenGL является сложной задачей, я не рекомендую делать это каждый кадр, только если вы уверены, что это не вызовет никаких проблем.Или, если вам нужно, чтобы реклама находилась только над поверхностью OpenGL, вы можете просто поместить представление рекламы поверх представления OpenGL, и оно должно отображаться правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...