# Android SDK バナー広告 端末幅いっぱいまで拡大表示するには

# はじめに

開発環境としてAndroid Studioを使用することを前提とします。
本項ではAd Generation SDKにおいて320×50のサイズのバナー広告を端末幅いっぱいに拡大して表示させる方法を示します。

この方法では、バナー広告のアスペクト比を変えず端末幅まで幅と高さを等倍率で拡大させます。
端末サイズにより高さが可変となりますので、それらを考慮した画面実装が必要になります。

# 1. バナー広告のサイズを計算する

以下はバナー広告のサイズを計算するFrameLayoutを拡張したクラスの実装例です。

:::: tabs
::: tab Java

public class BannerAdContainer extends FrameLayout {

    private static final int BANNER_BASE_WIDTH = 320;
    private static final int BANNER_BASE_HEIGHT = 50;
    private Context context;
    private float dpWidth;
    private float dpHeight;
    private float expandRate;

    public BannerAdContainer(Context context) {
        super(context);
        this.context = context;
    }

    public BannerAdContainer(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
    }

    public void updateExpandRate() {
        float density = context.getResources().getDisplayMetrics().density;
        int width = this.getWidth();
        dpWidth = width / density;
        expandRate = dpWidth / BANNER_BASE_WIDTH;
        dpHeight = BANNER_BASE_HEIGHT * expandRate;
    }

    public int getDpWidth() { return (int) dpWidth; }
    public int getDpHeight() { return (int) dpHeight; }
    public float getExpandRate() { return expandRate; }
}

:::
::::

# 2. 画面に設置する

端末幅いっぱいになるようにViewを設置してください。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="`">

    <!--省略-->

    <jp.supership.adgbanner.BannerAdContainer
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ad_container"
        android:layout_alignParentBottom="true">
    </jp.supership.adgbanner.BannerAdContainer>

</RelativeLayout>

# 3. 広告サイズと拡大率を指定する

ADG.setAdFrameSize()の幅(w)と高さ(h)および、
ADG.setAdScale()に比率を設定してください。

:::: tabs
::: tab Java

public class MainActivity extends AppCompatActivity {
  // 省略
  @Override
  public void onWindowFocusChanged(boolean hasFocus) {
      super.onWindowFocusChanged(hasFocus);
      ((BannerAdContainer) findViewById(R.id.ad_container)).updateExpandRate();

      BannerAdContainer ad_container = (BannerAdContainer) findViewById(R.id.ad_container);
      ADG adg = new ADG(MainActivity.this);
      // 省略
      adg.setAdFrameSize(ADG.AdFrameSize.FREE.setSize(ad_container.getDpWidth(), ad_container.getDpHeight()));
      adg.setAdScale(ad_container.getExpandRate());
      // 省略
      ad_container.addView(adg);
  }
}

:::
::::

注意

アドネットワーク事業者の配信する広告クリエイティブによっては、こちらの方法でも正しく拡大が行えなえず、実装上では制御できない可能性がございます。
以下は拡大表示の確認ができているアドネットワークです。

  • GunosyAds
  • i-mobile
  • nend
  • Zucks
Last Updated: 9/7/2022, 5:36:01 AM