# Load Ads

## Creating Fullscreen Ads

The new Fullscreen APIs combine the existing Rewarded and Interstitial ad formats with the new Rewarded Interstitial ad format into a single integration experience. The older APIs have been marked deprecated, but are still functional until the 5.0.0 SDK release.

To show a Fullscreen ad, create a Fullscreen ad load request using the **Placement Name** you set up on your [Chartboost platform](https://platform.chartboost.com/).

<ul class="tab" data-tab="d5f7b02d-a973-47e9-828e-d1534af98645" data-name="createFullscreenAds">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="d5f7b02d-a973-47e9-828e-d1534af98645" data-name="createFullscreenAds">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// While in a coroutine</span>
<span class="kd">val</span> <span class="py">adRequest</span> <span class="p">=</span> <span class="nc">ChartboostMediationAdLoadRequest</span><span class="p">(</span>
   <span class="n">placementName</span> <span class="p">=</span> <span class="p">[</span><span class="nc">Your</span> <span class="nc">Placement</span> <span class="nc">Name</span><span class="p">],</span>
   <span class="n">keywords</span> <span class="p">=</span> <span class="nc">Keywords</span><span class="p">(),</span>
<span class="p">)</span>

<span class="kd">val</span> <span class="py">loadResult</span> <span class="p">=</span> <span class="nc">HeliumSdk</span><span class="p">.</span><span class="nf">loadFullscreenAd</span><span class="p">(</span>
       <span class="n">context</span><span class="p">,</span>
       <span class="n">adRequest</span><span class="p">,</span>
       <span class="kd">object</span> <span class="err">: </span><span class="nc">ChartboostMediationFullscreenAdListener</span> <span class="p">{</span>
           <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdImpressionRecorded</span><span class="p">(</span><span class="n">ad</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAd</span><span class="p">)</span> <span class="p">{</span>
               <span class="c1">// Impression</span>
           <span class="p">}</span>

           <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">ad</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAd</span><span class="p">)</span> <span class="p">{</span>
               <span class="c1">// Clicked</span>
           <span class="p">}</span>

           <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdRewarded</span><span class="p">(</span><span class="n">ad</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAd</span><span class="p">)</span> <span class="p">{</span>
               <span class="c1">// Rewarded</span>
           <span class="p">}</span>

           <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdExpired</span><span class="p">(</span><span class="n">ad</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAd</span><span class="p">)</span> <span class="p">{</span>
               <span class="c1">// Expired</span>
           <span class="p">}</span>

           <span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClosed</span><span class="p">(</span>
               <span class="n">ad</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAd</span><span class="p">,</span>
               <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?</span>
           <span class="p">)</span> <span class="p">{</span>
               <span class="c1">// Closed</span>
           <span class="p">}</span>
       <span class="p">}</span>
   <span class="p">)</span>
<span class="p">}</span>

</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">ChartboostMediationAdLoadRequest</span> <span class="n">adRequest</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ChartboostMediationAdLoadRequest</span><span class="o">([</span><span class="nc">Your</span> <span class="nc">Placement</span> <span class="nc">Name</span><span class="o">],</span> <span class="k">new</span> <span class="nc">Keywords</span><span class="o">());</span>

<span class="nc">HeliumSdk</span><span class="o">.</span><span class="na">loadFullscreenAdFromJava</span><span class="o">(</span>
       <span class="n">context</span><span class="o">,</span>
       <span class="n">adRequest</span><span class="o">,</span>
       <span class="k">new</span> <span class="nf">ChartboostMediationFullscreenAdListener</span><span class="o">()</span> <span class="o">{</span>
           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Impression</span>
           <span class="o">}</span>

           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Clicked</span>
           <span class="o">}</span>

           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdRewarded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Rewarded</span>
           <span class="o">}</span>

           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdExpired</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Expired</span>
           <span class="o">}</span>

           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClosed</span><span class="o">(</span>
               <span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">,</span>
               <span class="nd">@Nullable</span> <span class="nc">ChartboostMediationAdException</span> <span class="n">error</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Closed</span>
           <span class="o">}</span>
       <span class="o">},</span>
       <span class="k">new</span> <span class="nf">ChartboostMediationFullscreenAdLoadListener</span><span class="o">()</span> <span class="o">{</span>
           <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdLoaded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span><span class="o">)</span> <span class="o">{</span>
               <span class="c1">// Loaded</span>
           <span class="o">}</span>
       <span class="o">}</span>
   <span class="o">)</span>


</code></pre></div></div>
</li>
  
</ul>


### Ad Queueing
Ad queueing is a new feature for SDK 4.9.0+ that allows queueing up multiple fullscreen ads to show in succession. This can reduce and potentially eliminate latency for ad experiences that require showing fullscreen ads back to back.

Banners and adaptive banners cannot be queued.

<ul class="tab" data-tab="7590015c-a528-4562-9d85-b7aa1294d831" data-name="androidAdQueueing">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="7590015c-a528-4562-9d85-b7aa1294d831" data-name="androidAdQueueing">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Create a Chartboost Mediation fullscreen ad queue with the ad queue manager. The manager returns a ChartboostMediationFullscreenAdQueue.</span>
<span class="kd">val</span> <span class="py">queue</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAdQueue</span> <span class="p">=</span> <span class="nc">ChartboostMediationFullscreenAdQueueManager</span><span class="p">.</span><span class="nf">queue</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">placementName</span><span class="p">)</span>

<span class="c1">// To listen to ad queue events, you can use the ChartboostMediationFullscreenAdQueueListener</span>
<span class="n">queue</span><span class="p">.</span><span class="n">adQueueListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">ChartboostMediationFullscreenAdQueueListener</span> <span class="p">{</span>
    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onFullScreenAdQueueUpdated</span><span class="p">(</span>
        <span class="n">adQueue</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAdQueue</span><span class="p">,</span>
        <span class="n">result</span><span class="p">:</span> <span class="nc">AdLoadResult</span><span class="p">,</span>
        <span class="n">numberOfAdsReady</span><span class="p">:</span> <span class="nc">Int</span><span class="p">,</span>
    <span class="p">)</span> <span class="p">{</span>
        <span class="nf">println</span><span class="p">(</span>
            <span class="s">"Fullscreen ad queue updated${
</span>                <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">error</span> <span class="p">!=</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
                    <span class="s">" with error: ${result.error?.cause}"</span>
                <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
                    <span class="s">""</span>
                <span class="p">}</span>
            <span class="p">}.</span> <span class="nc">Number</span> <span class="n">of</span> <span class="n">ads</span> <span class="n">ready</span><span class="p">:</span> <span class="err">$</span><span class="n">numberOfAdsReady</span><span class="s">",
</span>        <span class="p">)</span>
    <span class="p">}</span>

    <span class="k">override</span> <span class="k">fun</span> <span class="nf">onFullscreenAdQueueExpiredAdRemoved</span><span class="p">(</span>
        <span class="n">adQueue</span><span class="p">:</span> <span class="nc">ChartboostMediationFullscreenAdQueue</span><span class="p">,</span>
        <span class="n">numberOfAdsReady</span><span class="p">:</span> <span class="nc">Int</span><span class="p">,</span>
    <span class="p">)</span> <span class="p">{</span>
        <span class="nf">println</span><span class="p">(</span><span class="s">"Fullscreen ad queue removed an expired ad. Number of ads ready: $numberOfAdsReady"</span><span class="p">)</span>
    <span class="p">}</span>
<span class="p">}</span>

<span class="c1">// To start queueing ads, use the `start()` method.</span>
<span class="n">queue</span><span class="p">.</span><span class="nf">start</span><span class="p">()</span>

<span class="c1">// To check if the queue is running, query the read-only `isRunning` property.</span>
<span class="n">queue</span><span class="p">.</span><span class="n">isRunning</span>

<span class="c1">// To check if there's an ad in the queue, use the `hasNextAd()` method.</span>
<span class="c1">// To get an ad from the queue, use the `getNextAd()` method.</span>
<span class="nc">CoroutineScope</span><span class="p">(</span><span class="nc">Main</span><span class="p">).</span><span class="nf">launch</span> <span class="p">{</span>
  <span class="k">if</span> <span class="p">(</span><span class="n">queue</span><span class="p">.</span><span class="n">hasNextAd</span><span class="p">)</span> <span class="p">{</span>
    <span class="kd">val</span> <span class="py">ad</span> <span class="p">=</span> <span class="n">queue</span><span class="p">.</span><span class="nf">nextAd</span><span class="p">()</span>
    <span class="c1">// Showing an ad needs to be in a suspend function.</span>
    <span class="c1">// Be mindful that ads will need to be reattached to your ChartboostMediationFullscreenAdListener if you are listening to ad cycle events.</span>
    <span class="n">ad</span><span class="o">?.</span><span class="n">listener</span> <span class="p">=</span> <span class="nf">fullscreenAdListener</span><span class="p">()</span>
    <span class="n">ad</span><span class="o">?.</span><span class="nf">show</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
  <span class="p">}</span>
<span class="p">}</span>

<span class="c1">// To stop the queue, use the `stop()` method.</span>
<span class="n">queue</span><span class="p">.</span><span class="nf">stop</span><span class="p">()</span>

<span class="c1">// Keywords can be set at any time, whether the queue is stopped or running.</span>
<span class="c1">// The next ad request sent by the running queue will use the keywords set here.</span>
<span class="n">queue</span><span class="p">.</span><span class="n">keywords</span><span class="p">.</span><span class="k">set</span><span class="p">(</span><span class="s">"keyword_key"</span><span class="p">,</span> <span class="s">"keyword_value"</span><span class="p">)</span>

<span class="c1">// To set a queue capacity, use the queueCapacity property.</span>
<span class="n">queue</span><span class="p">.</span><span class="n">queueCapacity</span> <span class="p">=</span> <span class="mi">3</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Create a Chartboost Mediation fullscreen ad queue with the ad queue manager. The manager returns a ChartboostMediationFullscreenAdQueue.</span>
<span class="nc">ChartboostMediationFullscreenAdQueue</span> <span class="n">queue</span> <span class="o">=</span> <span class="nc">ChartboostMediationFullscreenAdQueueManager</span><span class="o">.</span><span class="na">queue</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="n">placementName</span><span class="o">)</span>

<span class="c1">// To listen to ad queue events, you can use the ChartboostMediationFullscreenAdQueueListener</span>
<span class="kd">final</span> <span class="nc">ChartboostMediationFullscreenAdQueueListener</span> <span class="n">fullscreenAdQueueListener</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ChartboostMediationFullscreenAdQueueListener</span><span class="o">()</span> <span class="o">{</span>
    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onFullScreenAdQueueUpdated</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAdQueue</span> <span class="n">adQueue</span><span class="o">,</span> <span class="nd">@NonNull</span> <span class="nc">AdLoadResult</span> <span class="n">result</span><span class="o">,</span> <span class="kt">int</span> <span class="n">numberOfAdsReady</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Fullscreen ad queue has been updated for placement "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">". Number of ads ready to show: "</span> <span class="o">+</span> <span class="n">numberOfAdsReady</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="nd">@Override</span>
    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onFullscreenAdQueueExpiredAdRemoved</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ChartboostMediationFullscreenAdQueue</span> <span class="n">adQueue</span><span class="o">,</span> <span class="kt">int</span> <span class="n">numberOfAdsReady</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Fullscreen ad queue expired ad has been removed for placement "</span> <span class="o">+</span> <span class="n">placementName</span> <span class="o">+</span> <span class="s">". Number of ads ready to show: "</span> <span class="o">+</span> <span class="n">numberOfAdsReady</span><span class="o">);</span>
    <span class="o">}</span>
<span class="o">};</span>

<span class="c1">// Attach the created ChartboostMediationFullscreenAdQueueListener with the setAdQueueListener() method.</span>
<span class="n">queue</span><span class="o">.</span><span class="na">setAdQueueListener</span><span class="o">(</span><span class="n">fullscreenAdQueueListener</span><span class="o">);</span>

<span class="c1">// To start queueing ads, use the `start()` method.</span>
<span class="n">queue</span><span class="o">.</span><span class="na">start</span><span class="o">()</span>

<span class="c1">// To check if the queue is running, query the `isRunning()` method.</span>
<span class="n">queue</span><span class="o">.</span><span class="na">isRunning</span><span class="o">()</span>

<span class="c1">// To check if there's an ad in the queue, use the `hasNextAd()` method.</span>
<span class="c1">// To get an ad from the queue, use the `getNextAd()` method.</span>
<span class="k">if</span> <span class="o">(</span><span class="n">queue</span><span class="o">.</span><span class="na">hasNextAd</span><span class="o">())</span> <span class="o">{</span>
  <span class="nc">ChartboostMediationFullscreenAd</span> <span class="n">ad</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="na">getNextAd</span><span class="o">()</span>
  <span class="k">if</span> <span class="o">(</span><span class="n">ad</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
    <span class="c1">// Be mindful that ads will need to be reattached to your ChartboostMediationFullscreenAdListener if you are listening to ad cycle events.</span>
    <span class="n">ad</span><span class="o">.</span><span class="na">setListener</span><span class="o">(</span><span class="n">fullscreenAdListener</span><span class="o">())</span>  
    <span class="n">ad</span><span class="o">.</span><span class="na">showFullscreenAdFromJava</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="n">result</span> <span class="o">-&gt;</span> <span class="o">{});</span>
  <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
    <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Fullscreen ad is null. Load an ad first."</span><span class="o">);</span>
  <span class="o">}</span>
<span class="o">}</span>

<span class="c1">// To stop the queue, use the `stop()` method.</span>
<span class="n">queue</span><span class="o">.</span><span class="na">stop</span><span class="o">()</span>

<span class="c1">// To set a queue capacity, use the `setQueueCapacity(int value)` method.</span>
<span class="c1">// The dashboard's queue size settings can be overridden at runtime.</span>
<span class="c1">// If this placement has a Queue Size setting of 2 and Max Queue Size</span>
<span class="c1">// is 4 or 5, this line of code will increase this queue's size to</span>
<span class="c1">// 4. But if Max Queue Size is smaller than the number passed to</span>
<span class="c1">// setQueueCapacity, the queue size will only be increased up to the</span>
<span class="c1">// allowed maximum. So if Max Queue Size is 3 then an error message</span>
<span class="c1">// will be logged and this queue's size will be changed to 3.</span>
<span class="n">queue</span><span class="o">.</span><span class="na">setQueueCapacity</span><span class="o">(</span><span class="mi">3</span><span class="o">)</span>
</code></pre></div></div>
</li>
  
</ul>


## Banner Ads for SDK 4.6.0+
Mediation SDK 4.6.0 introduces a new [Adaptive Banner](/en/mediation/ad-types/#adaptive-banner/) ad format, capable of serving flexible and fixed sized ads in the placement. The new [Adaptive Banner](/en/mediation/ad-types/#adaptive-banner/) ad format has the following features:
- Publishers can choose whether to use Adaptive Ads or Fixed Ads in a given placement.
- Fixed Ads are supported in Adaptive Ad placements (backwards compatible).
- Publishers should know whether an ad is fixed or flexible and receive the dimensions of fixed ads.
- Publishers can align the ad horizontally and/or vertically.
- Publishers can resize the ad container to fit the ad or optionally discard oversized ads that are rendered in the container.
- The ad container can be in-line or on top of publisher content.

To use this new ad format, Publishers will need to create a new Adaptive Banner placement in their platform and integrate with the new Adaptive Banner APIs.

<div class="alert alert-warning" role="alert">
  <b>Caution:</b> Google Bidding does not support 0 height adaptive banner sizes and will result in no fill.
</div>

### Loading Banner Ads


The API class `HeliumBannerSize` will support both fixed and adaptive banners:


|Field|Description|
|--|--|
|`HeliumBannerAd.HeliumBannerSize.Companion.STANDARD`|Static constant that returns a fixed `STANDARD` banner with a size of 320x50.|
|`HeliumBannerAd.HeliumBannerSize.Companion.MEDIUM`|Static constant that returns a fixed MREC `MEDIUM` banner with a size of 300x250.|
|`HeliumBannerAd.HeliumBannerSize.Companion.LEADERBOARD`|Static constant that returns a fixed `LEADERBOARD` banner with a size of 728x90.|
|`fun getAdType(): Int`|An enum specifying that the ad size is either fixed (size cannot change) or adaptive (size can change but must maintain aspectRatio). This is an integer based enum.|
|`fun getSize(): HeliumBannerSize`|Get the size of the ad.|
|`val aspectRatio: Double`|The aspect ratio of the ad. This can be derived from the size. Will be 0 if either the width or the height are <= 0.|
|`fun bannerSize(width: Int)`|Creates a flexible/adaptive banner size with 0 height.|
|`fun bannerSize(width: Int, height: Int): HeliumBannerSize`|Creates a flexible/adaptive banner size with a width and max height. Used either when the height of an inline ad should be capped, or when requesting an anchored banner.|
|`<additional conveniences>` {::nomarkdown}<li><code>fun adaptive2x1(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive4x1(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive6x1(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive8x1(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive10x1(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive1x2(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive1x3(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive1x4(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive9x16(width: Int): HeliumBannerSize</code></li><li><code>fun adaptive1x1(width: Int): HeliumBannerSize</code></li> {:/} |This provides additional conveniences to create sizes based on the IAB ratios (e.g. 6:1, 1:1) with a width. For example, using the 6:1 convenience with a 600 width would return a size of 600x100. Note that these are max sizes, therefore smaller sizes or other aspect ratios may be served.|





<ul class="tab" data-tab="d188ab26-f536-44de-87fe-3b40e0b24ecb" data-name="Android460LoadBannerAd">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
</ul>
<ul class="tab-content" id="d188ab26-f536-44de-87fe-3b40e0b24ecb" data-name="Android460LoadBannerAd">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// To load an adaptive 6x1 ad (with width 300dp)</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="n">placement</span><span class="p">,</span> <span class="nc">HeliumBannerSize</span><span class="p">.</span><span class="nf">adaptive6x1</span><span class="p">(</span><span class="mi">300</span><span class="p">))</span>
    <span class="c1">// You can pass in another size or the old non-adaptive sizes such as HeliumBannerSize.STANDARD</span>

<span class="c1">// To listen for refreshes</span>
<span class="kd">val</span> <span class="py">listener</span><span class="p">:</span> <span class="nc">HeliumBannerAdListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">HeliumBannerAdListener</span> <span class="p">{</span>
    <span class="k">fun</span> <span class="nf">onAdViewAdded</span><span class="p">(</span><span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span> <span class="n">child</span><span class="p">:</span> <span class="nc">View</span><span class="p">?)</span> <span class="p">{</span>
        <span class="c1">// notified that a view is added.</span>
    <span class="p">}</span>
    <span class="c1">// other callbacks didn't change</span>
<span class="p">}</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="n">heliumBannerAdListener</span> <span class="p">=</span> <span class="n">listener</span>
</code></pre></div></div>
</li>
  
</ul>



To receive the creative size of successfully loaded ads, call the following. If the returned size is -1, then it is a flexible width returned by the partner.

<ul class="tab" data-tab="87947112-8e08-4b94-8f80-81ad60560dd7" data-name="AndroidAdaptiveLoadCallback">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
</ul>
<ul class="tab-content" id="87947112-8e08-4b94-8f80-81ad60560dd7" data-name="AndroidAdaptiveLoadCallback">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">listener</span><span class="p">:</span> <span class="nc">HeliumBannerAdListener</span> <span class="p">=</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">HeliumBannerAdListener</span> <span class="p">{</span>

<span class="c1">// An overload for the existing onAdCached function that provides an </span>
<span class="c1">// additional parameter, the banner size. By default this calls the </span>
<span class="c1">// currently implemented onAdCached</span>
<span class="k">fun</span> <span class="nf">onAdCached</span><span class="p">(</span>
        <span class="n">placementName</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span>
        <span class="n">loadId</span><span class="p">:</span> <span class="nc">String</span><span class="p">,</span>
        <span class="n">winningBidInfo</span><span class="p">:</span> <span class="nc">Map</span><span class="p">&lt;</span><span class="nc">String</span><span class="p">,</span> <span class="nc">String</span><span class="p">&gt;,</span>
        <span class="n">error</span><span class="p">:</span> <span class="nc">ChartboostMediationAdException</span><span class="p">?,</span>
        <span class="n">bannerSize</span><span class="p">:</span> <span class="nc">Size</span>
<span class="p">)</span>
<span class="c1">// the other callbacks have not changed</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
</ul>




### Resizing Adaptive Banner Container

<ul class="tab" data-tab="6ba1ec5d-5d6b-4881-a81d-2aa18e748766" data-name="Android460ResizingAdapterBannerAd">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
</ul>
<ul class="tab-content" id="6ba1ec5d-5d6b-4881-a81d-2aa18e748766" data-name="Android460ResizingAdapterBannerAd">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">density</span> <span class="p">=</span> <span class="n">context</span><span class="p">.</span><span class="n">resources</span><span class="p">.</span><span class="n">displayMetrics</span><span class="p">.</span><span class="n">density</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="n">layoutParams</span> <span class="p">=</span> <span class="nc">ViewGroup</span><span class="p">.</span><span class="nc">LayoutParams</span><span class="p">(</span>
                    <span class="mi">300</span> <span class="p">*</span> <span class="n">density</span><span class="p">,</span>
                    <span class="mi">50</span> <span class="p">*</span> <span class="n">density</span>
                <span class="p">)</span>
<span class="c1">// If you want this to be automatic, just use WRAP_CONTENT for</span>
<span class="c1">// both width and height.</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="n">layoutParams</span> <span class="p">=</span> <span class="nc">ViewGroup</span><span class="p">.</span><span class="nc">LayoutParams</span><span class="p">(</span>
                    <span class="nc">ViewGroup</span><span class="p">.</span><span class="nc">LayoutParams</span><span class="p">.</span><span class="nc">WRAP_CONTENT</span><span class="p">,</span>
                    <span class="nc">ViewGroup</span><span class="p">.</span><span class="nc">LayoutParams</span><span class="p">.</span><span class="nc">WRAP_CONTENT</span>
                <span class="p">)</span>
<span class="c1">// You can change this anytime. The next ad will use these sizes.</span>

<span class="c1">// To get the size of the currently showing creative, see:</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="nf">getCreativeSizeDips</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
</ul>


### Discarding Oversized Ads

The `setShouldDiscardOversizedAds` will allow you the option to discard or allow ads larger than what is set for `HeliumBannerSize`.

<ul class="tab" data-tab="cf87336a-8fa0-4cdc-9ab3-7bc0dcfcf29a" data-name="Android460discardingOversizedAd">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
</ul>
<ul class="tab-content" id="cf87336a-8fa0-4cdc-9ab3-7bc0dcfcf29a" data-name="Android460discardingOversizedAd">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// To drop oversized ads</span>
<span class="nc">HeliumSdk</span><span class="p">.</span><span class="nf">setShouldDiscardOversizedAds</span><span class="p">(</span><span class="k">true</span><span class="p">)</span>

<span class="c1">// To allow oversized ads</span>
<span class="nc">HeliumSdk</span><span class="p">.</span><span class="nf">setShouldDiscardOversizedAds</span><span class="p">(</span><span class="k">false</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
</ul>



## Banner Ads for SDK 4.5.x and prior

### Creating Banner Ads

There are two ways to create banners on Android: 

- programmatically
- XML

The following banner sizes can be passed down. Some partners may not fill for some banner sizes.

| Banner Enum | Dimensions (Width & Height) |
| :---------- | :-------------------------: |
| Standard    | 320 x 50          |
| Medium      | 300 x 250          |
| Leaderboard | 728 x 90          |

#### Create Banner Ads Programmatically

The following Fixed Ad Size APIs are deprecated starting SDK 4.6.0 but are still supported

1. Declare a variable to hold a reference to the Banner Mediation Ad.
2. Supply the corresponding **Placement Name** and **Banner Size**

<ul class="tab" data-tab="e590d985-3333-4ab0-9f24-f54c20359230" data-name="createProgrammatically">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="e590d985-3333-4ab0-9f24-f54c20359230" data-name="createProgrammatically">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/*
  The following Banner enum Sizes can be passed down:
  HeliumBannerAd.HeliumBannerSize.STANDARD
  HeliumBannerAd.HeliumBannerSize.MEDIUM
  HeliumBannerAd.HeliumBannerSize.LEADERBOARD
*/</span>
<span class="kd">val</span> <span class="py">bannerSize</span> <span class="p">=</span> <span class="nc">HeliumBannerAd</span><span class="p">.</span><span class="nc">HeliumBannerSize</span><span class="p">.</span><span class="nc">STANDARD</span>
<span class="kd">val</span> <span class="py">heliumBannerAd</span> <span class="p">=</span> <span class="n">new</span> <span class="nc">HeliumBannerAd</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">placementName</span><span class="p">,</span> <span class="n">bannerSize</span><span class="p">,</span> <span class="n">bannerListener</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
  <span class="o">&lt;</span><span class="n">com</span><span class="o">.</span><span class="na">chartboost</span><span class="o">.</span><span class="na">heliumsdk</span><span class="o">.</span><span class="na">ad</span><span class="o">.</span><span class="na">HeliumBannerAd</span>
      <span class="nl">android:</span><span class="n">id</span><span class="o">=</span><span class="s">"@+id/bannerAd"</span>
      <span class="nl">android:</span><span class="n">layout_width</span><span class="o">=</span><span class="s">"wrap_content"</span>
      <span class="nl">android:</span><span class="n">layout_height</span><span class="o">=</span><span class="s">"wrap_content"</span>
      <span class="nl">tools:</span><span class="n">layout_height</span><span class="o">=</span><span class="s">"50dp"</span>
      <span class="nl">app:</span><span class="n">heliumBannerSize</span><span class="o">=</span><span class="s">"STANDARD"</span>
      <span class="nl">app:</span><span class="n">heliumPlacementName</span><span class="o">=</span><span class="s">"PlacementName"</span> <span class="o">/&gt;</span>
<span class="o">...</span>
</code></pre></div></div>
</li>
  
</ul>




### Loading Banner Ads

For Mediation SDK 3.0.0:

- `load()` returns a `String` representing the load request identifier. This return value is optional to consume.
- Banners are now automatically shown. Add this banner view to the view hierarchy and the ads will automatically be shown.

You will need to create an **ad instance** for each **placement name** you want to use. Finally, make the call to load the ad:

<ul class="tab" data-tab="f9b39db5-d6bd-4be8-9d22-a344b7aa8ca7" data-name="loadBannerAds">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="f9b39db5-d6bd-4be8-9d22-a344b7aa8ca7" data-name="loadBannerAds">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// load() returns a String representing the load request identifier.</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="nf">load</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// load() returns a String representing the load request identifier.</span>
<span class="n">heliumBannerAd</span><span class="o">.</span><span class="na">load</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>




## Clearing Loaded Ads

Clearing loaded ads may be necessary on existing placements to request another ad (i.e. for an in-house programmatic auction).

### Clearing Interstitial and Rewarded Ads

<ul class="tab" data-tab="66bb5c44-c826-4753-b628-1c6a05ea45d0" data-name="clearLoaded">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="66bb5c44-c826-4753-b628-1c6a05ea45d0" data-name="clearLoaded">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">heliumInterstitialAd</span><span class="p">.</span><span class="nf">clearLoaded</span><span class="p">()</span>
<span class="n">heliumRewardedAd</span><span class="p">.</span><span class="nf">clearLoaded</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">heliumInterstitialAd</span><span class="o">.</span><span class="na">clearLoaded</span><span class="o">();</span>
<span class="n">heliumRewardedAd</span><span class="o">.</span><span class="na">clearLoaded</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>



### Clearing Banner Ads

For Mediation SDK 3.0.0 on banners:

- Call `clearAd()` to clear the currently displayed and cached banner ad.

<ul class="tab" data-tab="a481220c-5955-4aa9-8308-4be2dd2ba1c0" data-name="clearAd">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="a481220c-5955-4aa9-8308-4be2dd2ba1c0" data-name="clearAd">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// To clear currently showing and any cached ad loaded for auto refresh.</span>
<span class="n">heliumBannerAd</span><span class="p">.</span><span class="nf">clearAd</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// To clear currently showing and any cached ad loaded for auto refresh.</span>
<span class="n">heliumBannerAd</span><span class="o">.</span><span class="na">clearAd</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


The 3.x.x `clearAd` and 2.x.x `clearLoaded` API returns a boolean and indicates if the ad object has been cleared and is ready for another load call.



