LoginSignup
5
6

More than 3 years have passed since last update.

[Android][AdMob] アダプティブ バナー

Last updated at Posted at 2019-11-17

最近見聞きするようになったAdMobのアダプティブバナー (Adaptive Banners) について説明します。

アダプティブバナーとは?

スマートバナーと何が違うの?ってすぐに思うと思います。公式サイトの説明読んでも、イマイチ分かりません。動きを見ていると、同一スマホでもバナーやスマートバナーの広告が両方表示されるハイブリッドな広告表示になっているようにしか見えない…。

バナー スマートバナー アダプティブバナー
Android_banner.png Android_adaptive.png Android_adaptive.png

サンプルコード

サンプルコード自体はMobile Ads SDK (Android)にあります。

基本的に、通常のバナー広告を表示する方法と同じです。AdSizeにAdSize.SMART_BANNERを指定するのではなく、以下のようにデバイスのdensity (論理密度) と広告表示エリアのサイズから計算したDPに基づいたAdSizeを指定する点が異なるだけで、簡単に対応できます。

DPとは?とかDPとPixelの変換方法などについては、こちらを参照して下さい。

注意点としては、日本語サイトのサンプルプログラムではAdSize.getCurrentOrientationBannerAdSizeWithWidthが利用されていますが、これは、18.3.0から名前が変更されて非推奨なAPIになっているため、英語ページのサンプルプログラムのAdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeを利用して下さい。

API 説明
AdSize.getLandscapeAnchoredAdaptiveBannerAdSize 横画面用
AdSize.getPortraitAnchoredAdaptiveBannerAdSize 縦画面用
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize 現在の画面用 (自動)
private val adSize: AdSize get() {
   val display = windowManager.defaultDisplay
   val outMetrics = DisplayMetrics()
   display.getMetrics(outMetrics)

   val density = outMetrics.density
   var adWidthPixels = ad_view_container.width.toFloat()
   if (adWidthPixels == 0f)
     adWidthPixels = outMetrics.widthPixels.toFloat()

   val adWidth = (adWidthPixels / density).toInt()
   return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
}

その他

AdSize.ADAPTIVE_BANNERとか用意して、AdMob SDK側で上記のサンプルコードのような事を対応してくれても良いような気がしますが…。

参考文献

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6