Libgdx 隐藏admob横幅广告
我想在用户进入游戏主屏幕时显示横幅admob。我使用Libgdx 隐藏admob横幅广告,libgdx,admob,banner,Libgdx,Admob,Banner,我想在用户进入游戏主屏幕时显示横幅admob。我使用setAlpha(0f)方法在onCreate中隐藏横幅,并使用setAlpha(1f)在第一个渲染循环中显示它。时机有点不合适。如何使其更精确?我还想知道设置alpha是否可以接受隐藏admob添加的方法 //渲染循环 if(showAd==false){ actionResolver.showBanner(); showAd=true; } //安卓启动器 protected
setAlpha(0f)
方法在onCreate中隐藏横幅,并使用setAlpha(1f)
在第一个渲染循环中显示它。时机有点不合适。如何使其更精确?我还想知道设置alpha是否可以接受隐藏admob添加的方法
//渲染循环
if(showAd==false){
actionResolver.showBanner();
showAd=true;
}
//安卓启动器
protected AdView adView;
protected View gameView;
private InterstitialAd interstitialAd;
private Activity context;
@Override
public void showBanner() {
try {
runOnUiThread(new Runnable() {
public void run() {
adView.setAlpha(1f);
}
});
} catch (Exception e) {
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context=this;
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
// 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);
RelativeLayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
layout.setLayoutParams(params);
AdView admobView = createAdView();
layout.addView(admobView);
View gameView = createGameView(cfg);
layout.addView(gameView);
setContentView(layout);
startAdvertising(admobView);
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_UNIT_ID_INTERSTITIAL);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdClosed() {
super.onAdClosed();
loadInterstitial();
}
});
}
private AdView createAdView() { ////// HERE I SET ALPHA
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID_BANNER);
adView.setId(123456); // this is an arbitrary id, allows for relative positioning in createGameView()
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
adView.setLayoutParams(params);
adView.setBackgroundColor(Color.BLACK);
adView.setAlpha(0f);
return adView;
}
private View createGameView(AndroidApplicationConfiguration cfg) {
gameView = initializeForView(new Cube(this,this), cfg);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
params.addRule(RelativeLayout.BELOW, adView.getId());
gameView.setLayoutParams(params);
return gameView;
}
private void startAdvertising(AdView adView) {
// AdRequest adRequest = new AdRequest.Builder().build();
// adView.loadAd(adRequest);
AdRequest.Builder builder = new AdRequest.Builder();
// builder.addTestDevice("3F39DA9CF3F587314F9C4C0D88639C28");
adView.loadAd(builder.build());
}
@Override
public void showInterstitial() {
try {
runOnUiThread(new Runnable() {
public void run() {
if (interstitialAd.isLoaded()) {
interstitialAd.show();
}
}
});
} catch (Exception e) {
}
}
@Override
public void loadInterstitial() {
try {
runOnUiThread(new Runnable() {
public void run() {
if(interstitialAd.isLoaded()){
}else{
AdRequest interstitialRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialRequest);
}
}
});
} catch (Exception e) {
}
}
@Override
public void onResume() {
super.onResume();
if (adView != null) adView.resume();
}
@Override
public void onPause() {
if (adView != null) adView.pause();
super.onPause();
}
@Override
public void onDestroy() {
if (adView != null) adView.destroy();
super.onDestroy();
}
@TargetApi(19)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
}
请共享您的代码如果您在进入主屏幕后加载add,则获取和加载广告将需要一段时间。请保持预获取以便立即显示。是的,我使用方法StartAversising在onCreate中加载横幅。我想我会活下去的,即使时间有点不合适。setAlpha()方法呢?在最短时间内显示alpha为0的广告是否仍算作印象?是的,我猜它将算作印象,因为广告是渲染的,但只是透明的,用户看不到它。但是,不能确定。@krompir2为什么不使用#setVisibility()方法?