我想要这样的另外两个问题:
Android AdMob Vertical ads
How to show admob ads vertical in landscape mode? (Android)
我从这开始: https://github.com/TheInvader360/tutorial-libgdx-google-ads
我努力将左侧垂直横幅放在横向模式上,但我只能在屏幕中心获得垂直方向,我无法将其向左移动。
此外,我在两个不同的"图层" :横幅重叠应用视图中进行此操作。我想要这个,因为我需要全屏应用视图。
另一点:我需要暂停并恢复应用以显示横幅,似乎" layout.bringChildToFront"在加载广告之前调用,因此无效。
( AndroidManifest.xml 我没什么特别的,我试图用代码来做)
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:screenOrientation="landscape"
android:orientation="vertical"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
/>
这是我的代码 :(我使用的是LIBGDX)
public class AndroidLauncher extends AndroidApplication {
private static final String AD_UNIT_ID_BANNER = "ca-app-pub-7938591782705263/4150532439";
protected AdView adView;
protected View gameView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.useAccelerometer = false;
cfg.useCompass = false;
// 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);
FrameLayout layout = new FrameLayout(this);//base container layout
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
layout.setLayoutParams(params);
AdView admobView = createAdView();//ads the banner and the app view to the base layout
layout.addView(admobView);
View gameView = createGameView(cfg);
layout.addView(gameView);
setContentView(layout);
startAdvertising(admobView);
layout.bringChildToFront(admobView);//this is currently not working, I need to pause and resume app to show the banner
}
private AdView createAdView() {
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID_BANNER);
adView.setId(12345);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.LEFT|LinearLayout.FOCUS_LEFT|Gravity.TOP|LinearLayout.FOCUS_UP);
//last hard try to get vertical banner at left side :/
adView.setRotation(270);
adView.setPadding(0, 0, 0, 0);
adView.setTop(0);
adView.setLeft(0);
adView.setRight(0);
adView.setX(0);
adView.setY(0);
adView.refreshDrawableState();
adView.setLayoutParams(params);
return adView;
}
private View createGameView(AndroidApplicationConfiguration cfg) {
gameView = initializeForView(new Main(), cfg);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
gameView.setLayoutParams(params);
return gameView;
}
private void startAdvertising(AdView adView) {
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
@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();
}
(...)
非常感谢,祝你有个美好的一天! ;)
答案 0 :(得分:0)
解决方法是让FrameLayout
包含GameView
,相对布局包含AdView
相对布局参数(换行内容并对齐父左)和更改旋转轴,然后rotateview
工作正常。
但广告仍然不可见,我试过这个:Admob ads appear only after first refresh并且没有效果。我必须按回家并恢复应用以查看广告...