Белая прямоугольная область в баннере Millennial Media на Android 4.0
В моей игре реализованы баннеры Millennial Media и Admob (Millennial вверху экрана, Admob внизу). Все делается программно в Android/Java с использованием RelativeLayout, сначала я добавляю MMAdView, затем поверхность OpenGl и в конце AdmobView. На устройствах с Android < 4.0 все нарисовано правильно, но на Ice Cream Sandwich вместо баннера тысячелетия есть огромная белая область. Я слишком долго боролся с этой проблемой. Есть идеи, что там может быть не так?
ОБНОВЛЕНИЕ: Мой друг сказал мне, что эта белая прямоугольная область видна, когда он не подключен к сети Wi-Fi. В моем коде я не проверяю доступность сети. Я просто запускаю метод millennialView.setVisibility(View.VISIBLE) для отображения баннера.
adMobView = new AdView(this, AdSize.BANNER, ADMOB_BANNER_ID);
adMobView.setAdListener(getAdMobListener());
AdRequest request = new AdRequest();
adMobView.loadAd(request);
RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layout.addView(adMobView, lay);
// ... adding OpenGL surface
int bannerWidth = (int)(displayMetrics.widthPixels * displayMetrics.density);
Hashtable<String, String> map = new Hashtable<String, String>();
map.put(MMAdView.KEY_WIDTH, String.valueOf(bannerWidth));
map.put(MMAdView.KEY_HEIGHT, "53");
millennialView = new MMAdView(this, MILLENNIAL_BANNER_ID, MMAdView.BANNER_AD_TOP, 30, map);
millennialView.setId(MMAdViewSDK.DEFAULT_VIEWID);
millennialView.setListener(getMillennialListener());
1 ответ
Кажется, что проблема заключалась в том, что баннер тысячелетия отображался, когда сеть была недоступна. Теперь, прежде чем представить баннер, я просто проверяю, есть ли подключение к сети:
ConnectivityManager connectivityMgr =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityMgr != null && connectivityMgr.getActiveNetworkInfo() != null) {
millennialView.setVisibility(View.VISIBLE);