changing admob banner size dynamically

14,503

Solution 1

If your layout is define in a xml, you can create one layout per screen size (layout-xlarge/mylayout.xml, layout-large/mylayout.xml, layout-normal/mylayout.xml, etc...)

More info here : http://developer.android.com/guide/practices/screens_support.html

Don't look at density, because, a 10.1" tablet has a medium density, but a 4.3" phone with a 480x850 resolution will have a high density. Use screen size instead (xlarge large normal small).

If you need to do it programatically, you can get the screen size with this :

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

and to compare, use Configuration.SCREENLAYOUT_xxx .

Solution 2

The most recent AdMob SDK includes AdSize.SMART_BANNER which enables the best size matched ad for the device.

I was using an older version myself and didn't knew about this feature :D

Share:
14,503
MBP
Author by

MBP

Updated on June 14, 2022

Comments

  • MBP
    MBP almost 2 years

    Here is the thing, as you might know Admob has a AdSize.* function, where u put Banner to show banner ads, and AD_banner` for tablet banners, what i want to do is take a screen size of a device so that i could throw it in my if statement and then put the right banner for right device, i hope i was clear enough.So anyone can tell me how can i get the screen size of device? Thank u ////////// Here's what i have done so far

         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());
    
            }