динамическое изменение размера баннера admob

Вот в чем дело, как вы, возможно, знаете, у Admob есть функция AdSize.*, где вы ставите Banner для показа баннеров, а AD_banner` для баннеров на планшетах, что я хочу сделать, так это взять размер экрана устройства, чтобы я мог его бросить. в моем выражении if, а затем поместите правильный баннер для правильного устройства, я надеюсь, что я был достаточно ясен. Итак, кто-нибудь может сказать мне, как я могу получить размер экрана устройства? Спасибо ////////// Вот что я сделал до сих пор

     DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

       if (dm.density==DisplayMetrics.DENSITY_HIGH) {
        AdView adView = new AdView(this, AdSize.BANNER,s);
        LinearLayout layout = (LinearLayout)findViewById(R.id.admob);
        layout.addView(adView);
        adView.loadAd(new AdRequest());
       }
       if (dm.density==DisplayMetrics.DENSITY_DEFAULT || dm.density==DisplayMetrics.DENSITY_LOW ) {
             AdView adView = new AdView(this, AdSize.BANNER,s);
             LinearLayout layout = (LinearLayout)findViewById(R.id.admob);
             layout.addView(adView);
            adView.loadAd(new AdRequest());

        }
        if(dm.density==DisplayMetrics.DENSITY_MEDIUM)
        {
            AdView adView = new AdView(this, AdSize.IAB_BANNER,s);
            LinearLayout layout = (LinearLayout)findViewById(R.id.admob);
            layout.addView(adView);
            adView.loadAd(new AdRequest());

        }

person MBP    schedule 05.08.2011    source источник


Ответы (2)


Если ваш макет определен в xml, вы можете создать один макет для каждого размера экрана (layout-xlarge/mylayout.xml, layout-large/mylayout.xml, layout-normal/mylayout.xml и т. д.).

Дополнительная информация здесь: http://developer.android.com/guide/practices/screens_support.html

Не смотрите на плотность, потому что 10,1-дюймовый планшет имеет среднюю плотность, а 4,3-дюймовый телефон с разрешением 480x850 будет иметь высокую плотность. Вместо этого используйте размер экрана (xlarge big normal small).

Если вам нужно сделать это программно, вы можете получить размер экрана следующим образом:

Configuration config = activity.getResources().getConfiguration();
int screenlayout = config.screenLayout;

а для сравнения используйте Configuration.SCREENLAYOUT_xxx .

person NitroG42    schedule 05.08.2011
comment
Спасибо, NitroG42, это именно то, что мне нужно. - person MBP; 05.08.2011

Самый последний AdMob SDK включает AdSize.SMART_BANNER, который позволяет использовать рекламу с наилучшим размером для устройства.

Я сам использовал более старую версию и не знал об этой функции :D

person RelativeGames    schedule 05.11.2012
comment
Блин, тоже не знал! Спасибо! - person sunlock; 13.12.2012
comment
Но обратите внимание, что в настоящее время вы не можете использовать смарт-баннеры с Network Mediation AdMob, как вы можете прочитать в документация. - person tarmelop; 26.01.2013
comment
Я настоятельно рекомендую избегать смарт-баннеров именно по этой причине; если позже вы решите посредничать, используя рекламную сеть, которая их не поддерживает, единственным выходом будет обновить код приложения; и вы не можете гарантировать, что все пользователи будут использовать обновленное приложение, поэтому вы можете сломать свою рекламу. - person Carlos P; 26.06.2014
comment
Кроме того, смарт-баннеры не являются не умными, они не могут обрабатывать повороты устройства, а это означает, что если приложение открыто в альбомной ориентации, после переключения в портретную реклама исчезнет, ​​потому что она не помещается. - person cprcrack; 17.12.2014