2011-05-23 30 views
3

我正在嘗試向自定義SurfaceView(我的主遊戲屏幕)添加Admob橫幅。我可以將橫幅放在屏幕的頂部或底部,但它會在兩種情況下重疊遊戲屏幕(並隱藏一些重要的UI元素)。如何在輸入時調整遊戲畫面的大小以使其不會重疊?Android:添加Admob橫幅而不會重疊主視圖

此線程提供了一個xml解決方案:How to get ad to show at bottom of screen without overlap,但由於我的視圖是用java編寫的,我需要一種以編程方式執行的方法。我試圖翻譯它,但是當我實現代碼時沒有橫幅出現。下面是兩個解決方案,第一個不顯示任何橫幅,第二個顯示底部的橫幅,但有重疊。我需要更改哪些參數才能消除重疊?

/* Admob advert on Android done programmatically! */ 
    adView = new AdView(this, AdSize.BANNER, "a14dc6ed8aead31"); 
    gameView = new GameView(this, gameEng, adView); 

    //no banner displays with this code 
    RelativeLayout rl = new RelativeLayout(this); 
    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.FILL_PARENT); 
    RelativeLayout.LayoutParams gameViewParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    gameViewParams.addRule(RelativeLayout.ABOVE); 
    rl.addView(adView, adParams); 
    rl.addView(gameView, gameViewParams); 
    setContentView(rl); 

    //a banner at the bottom displays, but it overlaps my game screen 
    /*FrameLayout layout = new FrameLayout(this); 
    FrameLayout.LayoutParams gameParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 
      FrameLayout.LayoutParams.FILL_PARENT); 
    FrameLayout.LayoutParams adsParams =new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 
      FrameLayout.LayoutParams.WRAP_CONTENT, android.view.Gravity.BOTTOM|android.view.Gravity.CENTER_HORIZONTAL); 
    layout.addView(gameView, gameParams); 
    layout.addView(adView, adsParams); 
    setContentView(layout);*/ 

    AdRequest request = new AdRequest(); 
    request.setTesting(true); 
    adView.loadAd(request); 

回答

0

我從來沒有解決了這個,但我發現周圍的工作。在萬一別人永遠運行到這個問題,嘗試將只是移動所有的繪圖座標起來:減去廣告橫幅的高度(你可以用getHeight()方法得到它)。

儘管廣告橫幅不會立即加載,所以您必須繼續檢查它。我在我的主遊戲循環中做到了這一點。