2013-12-08 134 views
2

就在兩天前,我開始知道SMART_BANNER不是最佳的點擊率,我們應該在admob的廣告尺寸之間動態切換。不同設備的Admob橫幅尺寸

這是我寫的Java代碼。當我在4英寸模擬器上運行代碼時,發現請求的是728x90廣告,並且響應的廣告尺寸無效。 (錯誤的描述是廣告不適合當前屏幕)請。幫助:

AdSize adsize = AdSize.SMART_BANNER; 

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
int orientation = display.getOrientation(); 

if(width >= 728 && height >= 90) { 
    adsize = AdSize.IAB_LEADERBOARD; 
    System.out.println("728 x 90"); 
} else if (width >= 468 && height >= 60) { 
    adsize = AdSize.IAB_BANNER; 
    System.out.println("468 x 60"); 
} else if (width >= 320 && height >= 50) { 
    adsize = AdSize.BANNER; 
    System.out.println("320 x 50"); 
} 

LinearLayout adContainer = (LinearLayout) findViewById(R.id.cakes); 
adView = new AdView(this, adsize, "xxxxxxxxxx"); 
AdRequest adRequest = new AdRequest(); 
adView.loadAd(adRequest); 

// Place the ad view. 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
adContainer.addView(adView, params); 
+1

此外SMART_BANNER不推薦用於Admob中介。 –

回答

5

getWindowManager().getDefaultDisplay().getWidth()返回以像素爲單位的寬度。您需要根據密度獨立像素的寬度來決定顯示哪條橫幅。

很久以前,我決定最好的解決方案是使用Android資源配置來指定adBannerSize。例如

final AdSize adSize; 
final int adBannerSize = getResources().getInteger(R.integer.adBannerSize); 
switch (adBannerSize) { 
    case 1 : 
     adSize = AdSize.BANNER; 
     break; 
    case 2 : 
     adSize = AdSize.IAB_BANNER; 
     break; 
    case 3 : 
     adSize = AdSize.IAB_LEADERBOARD; 
     break; 
    default: 
     Log.w(TAG, "No AdSize specified"); 
     adSize = AdSize.BANNER; 
     break; 
} 

然後,您可以輕鬆配置廣告橫幅大小以匹配您打算支持的任何設備配置。

1

由於V6.0,您可以使用常量SMART_BANNER作爲AdSize,ADS將根據屏幕大小顯示不同。

0

我有同樣的問題,但我的廣告沒有填滿整個屏幕的寬度,所以我不能依靠屏幕尺寸或資源限定符。

我發現解決方案後意識到AdSize documentation指出大小必須指定密度無關像素。我的最終代碼:

int width = container.getWidth(); 
width /= getResources().getDisplayMetrics().density; 
int height = 50; 
if(width >= 728) 
    height = 90; 
else if(width >= 468) 
    height = 60; 

return new AdSize(width, height);