有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将admob广告放置在LibGDX视图上方

我已经阅读了许多教程,例如:

https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx

然而,我似乎不能让我的头周围的一件事。他们都使用与游戏视图重叠的广告,我更希望它在上面,而我的游戏视图只是被压扁了。我该怎么做呢?我尝试过使用线性布局,但似乎也不起作用

这是我的onCreate()方法

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

        // Create the layout
        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 HelloWorld(), false);

        // Create and setup the AdMob view
        AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxx"); // Put in your secret key here
        adView.loadAd(new AdRequest());

        // Add the libgdx view
        layout.addView(gameView);

        // Add the AdMob view
        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
        setContentView(layout);
    }

共 (2) 个答案

  1. # 1 楼答案

    下面是我如何处理同样的问题。想法是首先设置AdView,然后将gameView放在布局中AdView的下面

    @Override public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Create the layout
        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 HelloWorld(), false);
    
        // Create and setup the AdMob view
        AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxx"); // Put in your secret key here
        adView.loadAd(new AdRequest());
    
        // Add the AdMob view
        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);
    
        //define in resource xml: <item type="id" name="adViewId"/>
        adView.setId(R.id.adViewId); 
    
        layout.addView(adView, adParams);
    
        RelativeLayout.LayoutParams gameParams = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
        gameParams.addRule(RelativeLayout.BELOW, adView.getId());
    
        // Add the libgdx view
        layout.addView(gameView, gameParams);
    
        // Hook it all up
        setContentView(layout);
    }
    
  2. # 2 楼答案

    如前所述here,您可以为您的gameview设置边距,这非常有效:

        RelativeLayout layout = new RelativeLayout(this);
        RelativeLayout.LayoutParams gameViewParams =
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
        gameViewParams.bottomMargin = 150;
    
        View gameView = initializeForView(new MainGame(), cfg);
        layout.addView(gameView, gameViewParams);
    
        AdView adView = new AdView(this);
        adView.setAdUnitId("app-id");
        adView.setAdSize(AdSize.BANNER);
    
        RelativeLayout.LayoutParams adParams = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    
        layout.addView(adView, adParams);
    
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    
        setContentView(layout);
    

    使用此选项,adView位于gameview下方,但我想您可以在adView下方放置一个marginTop,并将您的gameview置于adView下方