横幅广告(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
的可见性,方法是覆盖 AdListener
的 onAdLoaded()
方法,该方法会在广告加载完成后强制广告视图自行绘制。类似于:
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 将花费几毫秒的时间,因为它首先需要初始化自己。
我有一个很难向社区提出的问题。 我试图在我的应用程序状态中插入横幅,但它不是第一个在开始时打开的横幅。 在我的应用程序中有一个初始屏幕,当我按下一个点击框时,我会转到带有横幅的另一个屏幕,所以在下面的代码中 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
的可见性,方法是覆盖 AdListener
的 onAdLoaded()
方法,该方法会在广告加载完成后强制广告视图自行绘制。类似于:
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 将花费几毫秒的时间,因为它首先需要初始化自己。