【问题标题】:Android: how to display admob ads on GLSurfaceViewAndroid:如何在 GLSurfaceView 上显示 admob 广告
【发布时间】:2012-09-23 06:12:56
【问题描述】:

我目前能够在 ui view 上获得 admob 广告(在单独的测试项目中),但我想在 GLSurfaceView 上展示这个广告。 我试图在onCreate( ) 活动方法中加载广告,并在我的屏幕的当前方法中(所有渲染都完成)我调用了

MyGameActivity.mAdView.bringToFront(); //认为它会将广告带到所有游戏对象的前面。

现在在运行项目时,我可以在 logcat 窗口 Recieved ad url "big url" 中看到消息 但我看不到屏幕上的广告。在我的游戏中,只有一项活动和许多游戏画面。请帮我弄清楚如何在我的游戏屏幕上显示广告。

【问题讨论】:

  • 你的布局是什么样的?
  • 我在 java 代码中设置布局而不是在 xml 文件中,下面是代码 AdView mAdView = new AdView(this, AdSize.BANNER, "id"); FrameLayout layout=new FrameLayout(this);//(FrameLayout) this.findViewById(R.id.adViewLayout); FrameLayout.LayoutParams adsParams =new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, android.view.Gravity.BOTTOM|android.view.Gravity.CENTER_HORIZONTAL); layout.addView(GLGame.mAdView, adsParams); mAdView.loadAd(new AdRequest());
  • 您是否将您的 GLSurfaceView 添加到同一个 FrameLayout 中?如果是这样,您可以发布该代码。如果你不是,那是你的问题。
  • 我将 framelayout 添加到 contentView 现在我在屏幕上显示了广告。但是我希望它在用户在游戏屏幕上时不可见(在玩游戏时)我尝试加载游戏屏幕以将框架布局的可见性设置为不可见但它显示错误只有启动视图的线程才能更改此属性...有知道如何解决这个问题吗???

标签: android admob glsurfaceview


【解决方案1】:

你应该修改你的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutMain"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >       
    <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout1"
        android:tag="trueLayout"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        >       
    </RelativeLayout>
</LinearLayout>

这是我的代码,不言自明。:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        

    setContentView(R.layout.main);

    LinearLayout layoutMain = (LinearLayout) findViewById(R.id.layoutMain);

    // Create the adView
    // Please replace MY_BANNER_UNIT_ID with your AdMob Publisher ID
    adView = new AdView(this, AdSize.BANNER, "YourPersonalID#"); 

    layoutMain.addView(adView);

    // Initiate a generic request to load it with an ad
    AdRequest request = new AdRequest();
    request.setTesting(true);

    adView.loadAd(request);     

    RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.layout1);
    layout1.setOnTouchListener(this);

    mTestHarness = new GLSurfaceView(this);
    mTestHarness.setEGLConfigChooser(false);
    mTestHarness.setRenderer(this);
        mTestHarness.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);    

    layout1.addView(mTestHarness);
}

正确完成此操作后,您将获得与 google play 教程中的 BannerEssentials 教程应用程序等效的应用程序,但改用 GLSurfaceView。

【讨论】:

  • 感谢您的回答,我已经完成了,现在我的应用已准备好启动..:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多