我正在使用LibGDX 0.9.9和Admob 6.4.1。我设置了横幅广告,以显示在我的应用的右上角。但是,当我加载我的应用程序时,我看不到横幅。虽然当我按下横幅所在的位置时,它会像正常一样起作用并开始出现。这在测试模式和实模式下都会发生。这是我的代码:
public class MainActivity extends AndroidApplication {
private AdView adView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.useGL20 = false;
cfg.useAccelerometer = false;
cfg.useCompass = false;
RelativeLayout layout = new RelativeLayout(this);
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 Game(), false);
// Create and setup the AdMob view
adView = new AdView(this);
adView.setAdUnitId("SECRET ID");
adView.setAdSize(AdSize.BANNER);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // Emulator
.addTestDevice("MY DEVICE ID") // My Nexus test
.build();
adView.loadAd(adRequest);
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);
setContentView(layout);
}
public void onDestroy() {
if (adView != null) {
adView.destroy();
}
super.onDestroy();
}
和Android Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.keep.hopping"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:icon="@drawable/jumper"
android:label="Keep Hopping" >
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity
android:name="com.keep.hopping.MainActivity"
android:label="Keep Hopping"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
</manifest>
任何人都有任何想法为什么会发生这种奇怪的行为?
答案 0 :(得分:2)
在我的情况下,只需设置广告视图的背景即可解决问题:
...
layout.addView(adView, adParams);
adView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
...
你可以使用任何其他颜色。
答案 1 :(得分:1)
这里是AdMob6.4.1与libgdx集成的修复,我放了几行代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:paddingTop="1dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</RelativeLayout>
这是main.xml
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
setContentView(R.layout.main);
MainActivity.mContext = getApplicationContext();
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.useGL20 = false;
cfg.useAccelerometer = false;
cfg.useCompass = false;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.mainLayout);
mBlockPuzzleInstance = new BlockPuzzle(this);
initialize(mBlockPuzzleInstance, false);
View gameView = initializeForView(mBlockPuzzleInstance, true);
adView = new AdView(this);
adView.setAdUnitId("a152ffba4abde11");
adView.setAdSize(AdSize.SMART_BANNER);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
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);
setContentView(layout);
}
现在应该加载横幅。
快乐的编码!
答案 2 :(得分:1)
Lunatikul的回答对我有用,但对我来说重要的部分是填充:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:paddingTop="1dp"
... >
</RelativeLayout>
我实际上是以编程方式实现的:
layout.setPadding(0, 1, 0, 0);
希望这有帮助!
答案 3 :(得分:0)
您的问题可能是隐藏了第一个广告。如果您等待了60秒,然后出现了Adview,则只需在使用AdListener加载第一个广告后将AdView添加到布局中即可解决问题:
// Create and setup the AdMob view
AdRequest.Builder ad_builder = new AdRequest.Builder();
ad_builder.addTestDevice("XXXXXXXXXXXXX"); // my HTC phone
m_AdRequest = ad_builder.build();
m_AdView = new AdView(this);
m_AdView.setAdSize(AdSize.SMART_BANNER);
m_AdView.setAdUnitId("ZZZZZZZZZZZZ");
m_AdView.setVisibility(View.GONE);
m_AdView.setAdListener(new AdListener() {
private boolean _first = true;
@Override
public void onAdLoaded() {
if (_first) {
_first = false;
// Add the AdMob view when the first ad gets loaded, this makes sure the first ad gets displayed
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); // places the ad at the bottom overlapping your game
layout.addView(m_AdView, adParams);
}
}
});
希望这能解决你的头痛问题!