Banner ads occupy a spot within an app's layout, either at the top or bottom of the device screen. They stay on screen while users are interacting with the app, and can refresh automatically after a certain period of time. If you're new to mobile advertising, they're a great place to start.
This guide shows you how to integrate banner ads from AdMob into an Android app. In addition to code snippets and instructions, it also includes information about sizing banners properly and links to additional resources.
Prerequisites
- Import the Google Mobile Ads SDK, either by itself or as part of Firebase.
Add AdView to the layout
The first step toward displaying a banner is to place
AdView
in the layout for the Activity
or Fragment
in which you'd like to display
it. The easiest way to do this is to add one to the corresponding XML layout
file. Here's an example that shows an activity's
AdView
:
# main_activity.xml ... <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> ...
Note the following required attributes:
ads:adSize
- Set this to the ad size you'd like to use. If you don't want to use the standard size defined by the constant, you can set a custom size instead. See the banner size section below for details.ads:adUnitId
- Set this to the unique identifier given to the ad unit in your app where ads are to be displayed. If you show banner ads in different activities, each would require an ad unit.
You can alternatively create AdView
programmatically:
Java
AdView adView = new AdView(this); adView.setAdSize(AdSize.BANNER); adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); // TODO: Add adView to your view hierarchy.
Kotlin
val adView = AdView(this) adView.adSize = AdSize.BANNER adView.adUnitId = "ca-app-pub-3940256099942544/6300978111" // TODO: Add adView to your view hierarchy.
Always test with test ads
When building and testing your apps, make sure you use test ads rather than live, production ads. Failure to do so can lead to suspension of your account.
The easiest way to load test ads is to use our dedicated test ad unit ID for Android banners:
ca-app-pub-3940256099942544/6300978111
It's been specially configured to return test ads for every request, and you're free to use it in your own apps while coding, testing, and debugging. Just make sure you replace it with your own ad unit ID before publishing your app.
For more information about how the Mobile Ads SDK's test ads work, see Test Ads.
Load an ad
Once the AdView is in place, the next step is to
load an ad. That's done with the
loadAd()
method in the AdView
class. It takes an
AdRequest
parameter, which holds runtime information (such as targeting info) about a
single ad request.
Here's an example that shows how to load an ad in the onCreate()
method of an
Activity
:
MainActivity (excerpt)
Java
package ... import ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { private AdView mAdView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { } }); mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }
Kotlin
package ... import ... import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdView class MainActivity : AppCompatActivity() { lateinit var mAdView : AdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) {} mAdView = findViewById(R.id.adView) val adRequest = AdRequest.Builder().build() mAdView.loadAd(adRequest) } }
That's it! Your app is now ready to display banner ads.
Ad events
To further customize the behavior of your ad, you can hook onto a number of
events in the ad's lifecycle: loading, opening, closing, and so on. You can
listen for these events through the
AdListener
class.
To use an
AdListener
with
AdView
,
simply call the
setAdListener()
method:
Java
mAdView.setAdListener(new AdListener() { @Override public void onAdLoaded() { // Code to be executed when an ad finishes loading. } @Override public void onAdFailedToLoad(int errorCode) { // Code to be executed when an ad request fails. } @Override public void onAdOpened() { // Code to be executed when an ad opens an overlay that // covers the screen. } @Override public void onAdClicked() { // Code to be executed when the user clicks on an ad. } @Override public void onAdLeftApplication() { // Code to be executed when the user has left the app. } @Override public void onAdClosed() { // Code to be executed when the user is about to return // to the app after tapping on an ad. } });
Kotlin
mAdView.adListener = object: AdListener() { override fun onAdLoaded() { // Code to be executed when an ad finishes loading. } override fun onAdFailedToLoad(errorCode : Int) { // Code to be executed when an ad request fails. } override fun onAdOpened() { // Code to be executed when an ad opens an overlay that // covers the screen. } override fun onAdClicked() { // Code to be executed when the user clicks on an ad. } override fun onAdLeftApplication() { // Code to be executed when the user has left the app. } override fun onAdClosed() { // Code to be executed when the user is about to return // to the app after tapping on an ad. } }
Each of the overridable methods in
AdListener
corresponds to an event in the lifecycle of an ad.
Overridable methods | |
---|---|
onAdLoaded()
|
The onAdLoaded()
method is executed when an ad has finished loading. If you want to delay adding
the AdView
to your activity or fragment until you're sure an ad will be loaded, for
example, you can do so here.
|
onAdFailedToLoad()
|
The onAdFailedToLoad()
method is the only one that includes a parameter. The errorCode
parameter indicates what type of failure occurred. The possible values are
defined as constants in the
AdRequest
class:
|
onAdOpened()
|
This method is invoked when the user taps on an ad. |
onAdLeftApplication()
|
This method is invoked after
onAdOpened() ,
when a user click opens another app (such as the Google Play), backgrounding
the current app.
|
onAdClosed()
|
When a user returns to the app after viewing an ad's destination URL, this
method is invoked. Your app can use it to resume suspended activities or
perform any other work necessary to make itself ready for interaction.
Refer to the
AdMob
AdListener example for an implementation of the ad listener
methods in the Android API Demo app.
|
Banner sizes
The table below lists the standard banner sizes.
Size in dp (WxH) | Description | Availability | AdSize constant |
---|---|---|---|
320x50 | Banner | Phones and Tablets | BANNER |
320x100 | Large Banner | Phones and Tablets | LARGE_BANNER |
300x250 | IAB Medium Rectangle | Phones and Tablets | MEDIUM_RECTANGLE |
468x60 | IAB Full-Size Banner | Tablets | FULL_BANNER |
728x90 | IAB Leaderboard | Tablets | LEADERBOARD |
Provided width x Adaptive height | Adaptive banner | Phones and Tablets | N/A |
Screen width x 32|50|90 | Smart banner | Phones and Tablets | SMART_BANNER |
Learn more about Adaptive Banners, intended to replace Smart Banners. |
To define a custom banner size, set your desired
AdSize
, as shown here:
Java
AdSize adSize = new AdSize(300, 50);
Kotlin
val adSize = AdSize(300, 50)
Otros recursos
Ejemplos en GitHub
Ejemplo de implementación mínima de anuncios de banner: Java | Kotlin
Aplicación de ejemplo Banner RecyclerView: Java