2014-10-07 83 views
1

我使用Millennial Media等SDK和寫科爾多瓦/ PhoneGap的插件MMEDIA廣告白色整個屏幕,它工作得很好,在iOS和視頻廣告,但我在Android上使用橫幅廣告時遇到一些麻煩。Millenial Media橫幅廣告顯示

如果我插入MMAdView如(在頂部或底部對接)科爾多瓦web視圖的兄弟視圖,橫幅廣告始終顯示全屏幕空白,它涵蓋了web視圖。

當我寫日誌來檢查MMAdView的大小與getWidth()getMeasuredWidth(),它總是返回0或1,而不是實際大小!

這是相當類似的對這個問題,不同的是我使用純Java代碼,而不是XML佈局文件。

AdMob mediated Millenial Media ad taking entire screen on refresh

見截圖:

banner unexpected white screen

下面是代碼:

   adView = new MMAdView(cordova.getActivity()); 
       adView.setApid(bannerAdId); 
       adView.setId(MMSDK.getDefaultAdId()); 

       width = BANNER_AD_WIDTH; 
       height = BANNER_AD_HEIGHT; 
       //Finds an ad that best fits a users device. 
       if(canFit(MED_BANNER_WIDTH)) { 
        width = MED_BANNER_WIDTH; 
        height = MED_BANNER_HEIGHT; 
       } else if(canFit(IAB_LEADERBOARD_WIDTH)) { 
        width = IAB_LEADERBOARD_WIDTH; 
        height = IAB_LEADERBOARD_HEIGHT; 
       } 
       adView.setWidth(width); 
       adView.setHeight(height); 

       adView.setListener(new BannerListener()); 
       adView.getAd(); 

       ViewGroup parentView = (ViewGroup) webView.getParent(); 
       if(argPos <= TOP_RIGHT) { 
        parentView.addView(adView, 0); 
       } else { 
        parentView.addView(adView); 
       } 

回答

1

研究之後,我發現我自己的解決方案。

首先,創建旗幟視圖,設置邏輯adWidth和adHeight:

//Constants for tablet sized ads (728x90) 
private static final int IAB_LEADERBOARD_WIDTH = 728; 
private static final int IAB_LEADERBOARD_HEIGHT = 90; 

private static final int MED_BANNER_WIDTH = 480; 
private static final int MED_BANNER_HEIGHT = 60; 

//Constants for phone sized ads (320x50) 
private static final int BANNER_AD_WIDTH = 320; 
private static final int BANNER_AD_HEIGHT = 50; 

    MMAdView ad = new MMAdView(getActivity()); 
    ad.setApid(adId); 
    ad.setMMRequest(new MMRequest()); 
    ad.setId(MMSDK.getDefaultAdId()); 
    ad.setIgnoresDensityScaling(ignoreScaling); 
    ad.setTransitionType(transitionType); 

    //Finds an ad that best fits a users device. 
    if(canFit(MED_BANNER_WIDTH)) { 
     adWidth = MED_BANNER_WIDTH; 
     adHeight = MED_BANNER_HEIGHT; 
    } else if(canFit(IAB_LEADERBOARD_WIDTH)) { 
     adWidth = IAB_LEADERBOARD_WIDTH; 
     adHeight = IAB_LEADERBOARD_HEIGHT; 
    } 
    ad.setWidth(adWidth); 
    ad.setHeight(adHeight); 

橫幅視圖不能返回適當的寬度和高度,它必須從adWidth和adHeight來計算。

DisplayMetrics metrics = new DisplayMetrics(); 
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    float screenDensity = metrics.density; 

    int adViewWidth = (int) (adWidth * screenDensity); 
    int adViewHeight = (int) (adHeight * screenDensity); 

然後,使用計算出的adViewWidth和adViewHeight設置橫幅視圖的位置。

adViewLayout = new RelativeLayout(activity); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT); 
    ViewGroup rootView = (ViewGroup) getView().getRootView(); 
    rootView.addView(adViewLayout, params); 
    adViewLayout.bringToFront(); 

    Log.d(LOGTAG, String.format("show banner: (%d,%d), (%d x %d)", x,y,bw,bh)); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(bw, bh); 
    params.leftMargin = x; 
    params.topMargin = y; 
    adViewLayout.addView(adView, params); 

現在,它的工作原理,看截圖。

enter image description here

+0

我遇到同樣的問題。你可以上傳剩下的代碼嗎?我仍然無法做到這一點。以及如何將橫幅移到底部? – erasmus77 2014-11-14 11:54:39

+0

創建一個relativelayout或linearlayout作爲容器,將廣告橫幅視圖放入其中。 – 2014-11-14 12:59:58

+0

我設法做到了這一點,我也將其移至底部,但現在我在廣告周圍留有空白。它不像你的透明。任何ideeas? – erasmus77 2014-11-14 19:20:01

0

這很難說與出碼。這可能是由於您使用PhoneGap來包裝某些廣告代碼。它可能是一種不同類型的錯誤。既然您已經使用PhoneGap,您可能會發現Millennial Media的Javascript SDK更容易用於您的廣告需求。 http://docs.millennialmedia.com/mmadlib/index.html