【问题标题】:Android - Admob - Loading ad then changing visibility causes problemsAndroid - Admob - 加载广告然后更改可见性会导致问题
【发布时间】:2011-12-31 14:04:06
【问题描述】:

长版:我有一个安卓游戏。在每个“屏幕”中,我都在展示广告,但游戏屏幕本身 - 你实际玩的地方。现在,如果您启动应用程序游戏(广告开始加载),然后在广告加载完成之前点击“开始” - 它不会在应该显示的时候显示(只有一小段)

短版:调用AdView.loadAd,然后调用AdView.setVisibility(View.INVISIBLE)在收到广告之前如果我们在收到广告之后调用AdView.setVisibility(View.VISIBLE)之后会产生奇怪的结果已加载。

发生这种情况:

而不是,例如:

现在,点击左侧的这个小条仍然算作点击广告 - 点击它会执行点击广告的任何操作(启动浏览器等...)

如果您返回主屏幕(即单击主页按钮)然后返回应用程序,广告会再次按原样返回。

有人遇到过吗,有人知道如何解决吗?谢谢。

编辑:以下是相关代码:

创建广告视图:

this.mAdView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxx");

创建布局参数:

final FrameLayout.LayoutParams adViewLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.TOP | Gravity.CENTER_HORIZONTAL);

创建根视图组及其布局参数:

final FrameLayout frameLayout = new FrameLayout(this);
final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
                    FrameLayout.LayoutParams.FILL_PARENT);

添加到根视图组:

frameLayout.addView(this.mAdView, adViewLayoutParams);

最后,设置内容视图:

this.setContentView(frameLayout, frameLayoutLayoutParams);

【问题讨论】:

  • 您使用哪种代码来设置广告的可见性?我的意思是,您的代码的设计理念是什么?您在哪里设置可见性以及何时设置?另外,请提供您的 SDK 版本和 adMob lib 版本。我从来没有见过这样的事情。
  • 我尝试将视图设置为不可见,但无法重现您的问题。您能否发布一些最少的代码,尤其是在布局中添加 AdView 的地方?
  • 根据您的解决方案(在加载后显示广告),您是否发现 AdMob 不会计算初始展示次数,因为在 onAdLoaded 事件运行之前的几分之一秒内广告是不可见的?

标签: android visibility admob


【解决方案1】:
adContainer = (LinearLayout) view.findViewById(R.id.adViewContainer);
    adContainer.setVisibility(View.GONE);
    adContainer.addView(adView);

// 定义 adView 的代码放在这里。

adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            adContainer.setVisibility(View.VISIBLE);
        }
    });

【讨论】:

    【解决方案2】:

    我已经设法以这种方式解决它:

    1. 在更改可见性的方法中,我首先检查广告是否已加载。如果不是,我不会更改可见性:

    2. 为 AdView 设置一个 AdListener。在 onReceivedAd 方法中,我检查隐藏它的条件 - 如果它应该隐藏,我隐藏。

    这样可以正常工作。

    【讨论】:

      【解决方案3】:

      也许您可以尝试将 admobView 放在 AbsoluteLayout 中并使 Invisible 成为完整布局?

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多