Libgdx 隐藏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

我想在用户进入游戏主屏幕时显示横幅admob。我使用
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()方法?