【问题标题】:Show AdMob only on specific screen仅在特定屏幕上显示 AdMob
【发布时间】:2015-01-22 17:33:56
【问题描述】:

我在 Libgdx 上有一个游戏,我一直在尝试向其中添加 AdMob 横幅。 我有两个问题,

1) 横幅需要大约一分钟才能加载并显示在屏幕上,但它不应该

2) 横幅显示在每个屏幕上,我希望它只显示在菜单屏幕而不是游戏屏幕上。

这是我使用的代码:

public class AndroidLauncher extends AndroidApplication  {
AdView adView ;
@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
//  initialize(new GameMain(), config);
    RelativeLayout layout = new RelativeLayout(this);

    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    // Create the libgdx View
    View gameView = initializeForView(new GameMain(),config);

    layout.addView(gameView);
     adView = new AdView(this);
    adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
    adView.setAdSize(AdSize.BANNER);
    AdRequest adRequest = new AdRequest.Builder().build();
    RelativeLayout.LayoutParams adParams = 
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    layout.addView(adView, adParams);
    // Hook it all up
    adView.loadAd(adRequest);
    setContentView(layout);

    }

【问题讨论】:

    标签: android eclipse libgdx admob


    【解决方案1】:

    横幅确实需要几分钟才能加载,因此您必须先加载横幅一点时间才能显示它。关于第二个问题,不想显示banner的时候设置false;并设置为 true 以在需要时显示。

    【讨论】:

    • 我试图在 androidLauncer 上做一个线程来检查真假,但它让游戏真的很慢......没有其他方法吗?
    • @user3419789 您可以使用侦听器来设置每个屏幕中的可见性模式。这将比使用布尔标志更快
    • 如何使用监听器?你能给我一份关于它的文档或代码示例吗?
    • 我照他们说的做了,但广告并没有消失
    【解决方案2】:

    关于您的第一个问题

    加载广告需要一个非常缓慢的网络请求。您可以尝试按时间顺序定义广告,但我怀疑这会提供更好的体验:

     adView = new AdView(this);
        adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
        adView.setAdSize(AdSize.BANNER);
        AdRequest adRequest = new AdRequest.Builder().build();
        // Hook it all up
        adView.loadAd(adRequest);
        RelativeLayout.LayoutParams adParams = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        layout.addView(adView, adParams);
    

    关于您的第二个问题...

    有多种方法可以解决这个问题。最好的解决方案是使用能够显示和隐藏广告的界面。

    在游戏的核心项目中定义一个接口 AdHandler.java:

    public interface AdHandler {
       public void showAds(boolean show);
    }
    

    然后,在你的android项目中实现接口。

    只需按照official libgdx guide 控制 admob 广告即可。

    进入主题:

    " 控制 此示例将向您展示如何在您的 libgdx 应用中打开和关闭 AdMob 视图的可见性。 " https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx

    它有你需要的一切。

    【讨论】:

      【解决方案3】:

      我阅读了这篇文章并在代码上实现了它,但广告并没有消失。 这是安卓启动器:

          protected void onCreate (Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
      //  initialize(new GameMain(), config);
          RelativeLayout layout = new RelativeLayout(this);
      
          // Do the stuff that initialize() would do for you
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
          getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
      
          // Create the libgdx View
          View gameView = initializeForView(new GameMain(),config);
      
          layout.addView(gameView);
           adView = new AdView(this);
          adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
          adView.setAdSize(AdSize.BANNER);
          AdRequest adRequest = new AdRequest.Builder().build();
          RelativeLayout.LayoutParams adParams = 
              new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                      RelativeLayout.LayoutParams.WRAP_CONTENT);
          adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
          adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
          layout.addView(adView, adParams);
          // Hook it all up
          adView.loadAd(adRequest);
          setContentView(layout);
      
          }
      private final int SHOW_ADS = 1;
      private final int HIDE_ADS = 0;
      
      protected Handler handler = new Handler()
      {
          @Override
          public void handleMessage(Message msg) {
              switch(msg.what) {
                  case SHOW_ADS:
                  {
                      adView.setVisibility(View.VISIBLE);
                      break;
                  }
                  case HIDE_ADS:
                  {
                      adView.setVisibility(View.GONE);
                      break;
                  }
              }
          }
      };
      @Override
      public void showAds(boolean show) {
         handler.sendEmptyMessage(show ? SHOW_ADS : HIDE_ADS);
      }}
      

      我不想在窗口中显示广告,我这样做了:

      构造函数:

           public Main(Game game,AdHandler a)
       {
           this.game = game;
           this.ad =a;
       }
      

      以及对函数的调用:

      ad.showAds(false);
      

      代码有什么问题?

      编辑:我检查了,androidLauncher 中的 showads 函数甚至没有被调用我找不到原因

      【讨论】:

        【解决方案4】:

        我找到了这个解决方案。请测试这个:

        将此添加到线性布局中

        <com.google.ads.AdView
            android:id="@+id/adMob1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="{AdID}"
            ads:loadAdOnCreate="true"/>
        

        然后将其添加到 OnCreate 中

        AdView adView = (AdView) findViewById(R.id.adMob1);
            adView.loadAd(new AdRequest());
        

        如果有效,您可以添加您的特定代码。

        更多信息https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals

        【讨论】:

        • 此代码用于 xml 我的游戏中没有任何 xml 文件
        • 您可以创建一个并添加到您的游戏中,不是吗?
        • 我还没有真正学会如何在 libgdx 上实现它,我更喜欢以编程方式来做到这一点
        猜你喜欢
        • 2012-01-07
        • 2016-02-16
        • 1970-01-01
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        相关资源
        最近更新 更多