gpt4 book ai didi

android - 如何将广告 View 与游戏 View 分开?

转载 作者:行者123 更新时间:2023-12-04 23:57:17 25 4
gpt4 key购买 nike

目前我在 libgdx 中有一个游戏,它在游戏布局的顶部显示广告。但是,正如您所注意到的,它隐藏了屏幕顶部显示分数的部分区域。

enter image description here

问题:我怎样才能让广告显示在游戏 View /屏幕上方,这样它就不会重叠/隐藏游戏中的任何内容?我希望屏幕如下图所示。

enter image description here

当前代码:

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;


import de.golfgl.gdxgamesvcs.GpgsClient;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;


public class AndroidLauncher extends AndroidApplication {

private RelativeLayout layout;
private RelativeLayout.LayoutParams params;
private AdView bannerAd;

@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
//

GpgsClient gpgsClient = new GpgsClient();
gpgsClient.initialize(this, false);

SpaceEscape game = new SpaceEscape(gpgsClient);
//
//initialize(game, config);

View gameView = initializeForView(game,config);

////////// Define the layout
layout = new RelativeLayout(this);
layout.addView(gameView, ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

params = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);

params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.addRule(RelativeLayout.CENTER_IN_PARENT);

bannerAd = new AdView(this);
bannerAd.setAdUnitId("REDACTED");
bannerAd.setAdSize(AdSize.BANNER);

layout.addView(bannerAd, params);
setContentView(layout);

AdRequest ad = new AdRequest.Builder().build();
bannerAd.loadAd(ad);

}
}

最佳答案

要使用 RelativeLayout 避免这种重叠效果,您可以创建一个 Ad Container(例如:RelativeLayout Container),使用 RelativeLayout.ALIGN_PARENT_TOP 规则,并使用 RelativeLayout.BELOW 规则在广告容器下方添加 GameView。最后将您的 AdView 添加为上述 Ad Container 的子项。

下面是如何实现上述结构的示例:

//define the layout
layout = new RelativeLayout(this);

//adView Container RelativeLayout
RelativeLayout adContainerRL = new RelativeLayout(this);
adContainerRL.setBackgroundColor(Color.BLACK);
adContainerRL.setId(ViewCompat.generateViewId());
RelativeLayout.LayoutParams adContainerParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
adContainerParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
layout.addView(adContainerRL, adContainerParams);

//adView
AdView bannerAd = new AdView(this);
bannerAd.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); //this is a test ad unit id
bannerAd.setAdSize(AdSize.BANNER);
RelativeLayout.LayoutParams adViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
adViewParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
adViewParams.addRule(RelativeLayout.CENTER_IN_PARENT);
adContainerRL.addView(bannerAd, adViewParams);

//gameView
View gameView = initializeForView(game, config);
RelativeLayout.LayoutParams gameViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
gameViewParams.addRule(RelativeLayout.BELOW, adContainerRL.getId());
layout.addView(gameView, gameViewParams);

//set the layout
setContentView(layout);

//load ad
AdRequest ad = new AdRequest.Builder().build();
bannerAd.loadAd(ad);

关于android - 如何将广告 View 与游戏 View 分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70805106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com