我有一个关于Libgdx的游戏,我一直在尝试添加AdMob横幅。 我有2个问题,
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);
}
答案 0 :(得分:0)
横幅真的需要几分钟才能加载,因此您必须在展示之前加载横幅一段时间。关于第二个问题,当你不想展示横幅时,你应该设置为假;并设置为true以在需要时显示它。
答案 1 :(得分:0)
关于您的第一个问题,
加载广告需要安静缓慢的网络请求。您可以尝试按时间顺序定义广告,但我怀疑这会提供更好的体验:
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项目中实现接口。
只需关注控制admob广告的official libgdx guide即可。
转到话题:
"的控制强> 此示例将向您展示如何在libgdx应用内打开和关闭AdMob View的可见性。 " https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx。
它拥有您所需要的一切。
答案 2 :(得分:0)
我看了这个并在代码上实现了它,但广告并没有消失。 这是android启动器:
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函数甚至没有被调用我找不到原因
答案 3 :(得分:0)
我找到了这个解决方案。请测试一下:
将此添加到LinearLayout
<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