2013-12-02 2 views
3

Я прочитал много учебников, таких как этот:Как я могу размещать объявления 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); 
    } 
+0

Проверьте это в данной ссылке. Он использует относительную компоновку. [Admob в LibGdx] [1] [1]: http://stackoverflow.com/questions/17985828/how-to-implement-admob-in-my-game-in- libgdx/17986528 # 17986528 –

+0

@KumarSaurabh это моя проблема, она перекрывается! это ничего не решает, хотя я ценю вашу помощь –

ответ

3

Как указано 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, но я предполагаю, что вы можете поставить marginTop и ваш Gameview ниже AdView.

+0

Это другое решение для этого, чем использование жестко заданного значения для поля? Поскольку у меня есть аналогичная проблема, но высота баннера является переменной, так как я использую конфигурацию SMART_BANNER. (Кстати, это решение не работало для меня в любом случае). – Genry

+0

Я не пробовал, но я думаю, вы можете использовать 'updateViewLayout (View, LayoutParam)' для обновления макета вашего gameView с вычисленным значением для нижнего поля. Doc link: http://developer.android.com/reference/android/view/ViewGroup.html#updateViewLayout%28android.view.View,%20android.view.ViewGroup.LayoutParams%29 –

+1

Я решил проблему по-другому. См. Мой ответ ниже – Genry

2

Вот как я справился с той же проблемой. Идея заключается в том, чтобы сначала установить 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); 
} 
+0

Невозможно заставить это работать, хотя ... – JohnyTex

+0

Эта строка «initializeForView (новый HelloWorld(), false); похоже, изменился. – JohnyTex

+0

Получил. Я забыл строку: «adView.setId (R.id.adViewId);». Отлично. Спасибо! – JohnyTex

Смежные вопросы