横幅广告(libgdx 在 Android 工作室)

Banner Ads (libgdx in Android studio)

我有一个很难向社区提出的问题。 我试图在我的应用程序状态中插入横幅,但它不是第一个在开始时打开的横幅。 在我的应用程序中有一个初始屏幕,当我按下一个点击框时,我会转到带有横幅的另一个屏幕,所以在下面的代码中 TestPubb() 是第二个状态。

这是 AndroidLauncher:

public class AndroidLauncher extends AndroidApplication {
private static final String TAG ="AndroidLauncher";
protected AdView adView;


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

    RelativeLayout layout = new RelativeLayout(this);

    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    View gameView = initializeForView(new TestPubb(), config);
    layout.addView(gameView);


    adView = new AdView(this);
    adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            Log.i(TAG, "Ad Loaded...");
        }
    });
    adView.setAdSize(AdSize.SMART_BANNER);
    adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");


    AdRequest.Builder builder = new AdRequest.Builder();
    builder.addTestDevice("5845100B11B77FFC8C7AC54BD59AD27C");
    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT
    );

    layout.addView(adView, adParams);

    adView.loadAd(builder.build());

    setContentView(layout);


}

}

我应该改变什么?

您是不是忘记在加载横幅之前初始化移动广告 SDK? 这应该完成一次:

MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");

adView = new AdView(this);
adView.setAdListener(new AdListener() {
...

描述更详细here

您可以尝试更改 AdView 的可见性,方法是覆盖 AdListeneronAdLoaded() 方法,该方法会在广告加载完成后强制广告视图自行绘制。类似于:

adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            System.out.println("ad banner finished loading!");
            adView.setVisibility(View.GONE);
            adView.setVisibility(View.VISIBLE);
        }        
    });

Google 推荐使用 MobileAds.initialize(XXXXX) 但没有必要。

移动广告 SDK 需要几毫秒的时间来初始化自身,因此移动广告 SDK 提供了 initialize(..) 方法来调用它,甚至在您调用第一个广告之前。一旦完成,您的第一个请求就不会增加任何加载时间。如果您不调用它,那么您的第一个 AdRequest 将花费几毫秒的时间,因为它首先需要初始化自己。