[Android] AdMob サイズをPublisherAdViewを使って動的に変える

AdMob広告はバナーか全画面のInterstitialだけではなく色々なサイズがあります。また、指定したレイアウトにはまるようにするには PublisherAdView を使うことができます。
 
publisher adview 01 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える

Android Studio 3.5.3
API 29



AdMob 広告サイズ

 
タブレットや画面が大きくなったスマホの広告サイズはBannerかInterstitialの全画面だけだと思っていたのですが、いろいろあるようです。

 

 

AdMob フォーマット

 
以下のフォーマットが現在サポートされています。
 

サイズ(幅×高さ) 説明 対応 広告サイズの定数値
320×50 標準のバナー スマートフォン、タブレット BANNER admob banner - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
320×100 バナー(大) スマートフォン、タブレット LARGE_BANNER admob larg banner - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
300×250 IAB レクタングル(中) スマートフォン、タブレット MEDIUM_RECTANGLE admob medium rectangle - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
468×60 IAB フルサイズ バナー タブレット FULL_BANNER admob full banner - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
728×90 IAB ビッグバナー タブレット LEADERBOARD admob leaderboard - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
画面の幅×32|50|90 スマートバナー スマートフォン、タブレット SMART_BANNER admob smart banner - [Android] AdMob サイズをPublisherAdViewを使って動的に変える

バナー広告 | SDK for DFP Users on Android | Google Developers
 

BANNER, SMART_BANNERが一般的ですが、カスタムでサイズを変更したい場合は PublisherAdView を使うとできるようです。

 

PublisherAdView

 
レイアウトの空いたところに広告を入れたいとすると、レイアウトの縦横のサイズを取得して設定します。と言っても横幅はスマホの場合は最大幅にしたほうが見やすので、高さがどれだけかになります。
 
getWidth()、getHeight()でサイズを取り出せますが、これはonCreate()では表示が完了していません。
onWindowFocusChanged(boolean hasFocus)
で表示されるタイミングでサイズを取得する必要があります。
 
そのサイズをAdSizeに設定することにより動的に広告サイズの変更が可能となります。
 

 
ただし、このAdSizeに設定するサイズは dp で入れないといけないので画面のdensityを取り出して計算することになります。

 

サンプルコード

 
Firebaseでの設定の基本的なところはこちらを確認しておいてください。

activity a00 100x100 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
GoogleではFirebaseを使って詳細な解析ができるAdMobサービスを提供しています。今までのsdkを使った方法も残ってはいます...

今回はFirebaseで設定しましたが、Google Mobile Ads SDKでも可能です。

Firebase consoleにてプロジェクトを登録し
google-services.json
を取得してプロジェクトに組み入れます。

gradleの設定(バージョンは環境に合わます)
build.gradle(Project: xxx)

 
build.gradle(Module: app)

 
ManifestにアプリケーションIDを入れます。
AndroidManifest.xml

 
 
MainActivity.java

 
activity_main.xml

 
strings.xml

 
publisher adview 01 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
 
レイアウトの横幅いっぱいで高さ200dpの広告スペースを設定したところにAdMobが入りました。
 
 
広告のスペースを決めましたが、空いているところに埋め込む形にすることも可能です。
 
上下の高さを変えて、AdMob広告を空いているスペースに入るか試してみます。
(上の画像高さ/下の画像高さ)
 

admob publisheradview 01 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
100dp/200dp
admob publisheradview 02 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
150dp/300dp
admob publisheradview 03 - [Android] AdMob サイズをPublisherAdViewを使って動的に変える
100dp/400dp

 
広告スペースが大きくなりすぎると
「スペース全体にイメージ広告を表示しようとすると余白ができる場合は、画像が中央に配置され、両側のスペースは塗りつぶされます。」
となるようです。
 
 
関連ページ:

 
References:
バナー広告 | SDK for DFP Users on Android | Google Developers
PublisherAdView | Google APIs for Android | Google Developers

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません




シェアする

  • このエントリーをはてなブックマークに追加

フォローする