アダプティブ バナー(Adaptive Banner) の width | SDK v20 の準備

スマートバナーてなくなるんですね!

全幅表示のバナーを引き続き使用したい場合は、以下のコード スニペットに示されるようにアダプティブ バナーを使用してください。

👉 SDK v20 の準備  |  Android  |  Google Developers 

サンプルコードのここら。


 // Determine the screen width (less decorations) to use for the ad width.
 // If the ad hasn't been laid out, default to the full screen width.
 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)
   }

👉 アダプティブ バナー |  Google Developers 

コメントにも書かれてるけど、ほぼ無意味な


var adWidthPixels = ad_view_container.width.toFloat()
if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

通常の利用するタイミングを考えるとほぼ常に「0f」 でしょうか。

他の公式サンプルを見てみます。


   // Since we're loading the banner based on the adContainerView size, we need to wait until this
   // view is laid out before we can get the width.
   ad_view_container.viewTreeObserver.addOnGlobalLayoutListener {
     if (!initialLayoutComplete) {
       initialLayoutComplete = true
       loadBanner()
     }
   }

👉 googleads-mobile-android-examples/MyActivity.kt  

ad_view_container のレイアウトが完了するまで待ってから、loadBanner() → ad_view_container.width と処理が進んで前述分岐の意味が発生。

、、、

うん、

やっぱ、最近の公式サンプルコードやべーわ!

View サイズの取得のタイミングについては以下で🙆

👉 java - View's getWidth() and getHeight() returns 0 - Stack Overflow 


関連ワード:  Google初心者開発