AdMob如何确定何时分配了SMART_BANNER大小

时间:2018-10-30 09:08:07

标签: android admob

我有一个活动,其布局中包含一个AdView和一个ads:adSize="SMART_BANNER"。它位于屏幕底部,自定义WebView下。现在,WebView具有根据其可用空间(像素尺寸)呈现的内容。因此,在渲染WebView内容之前,我需要知道SMART_BANNER将占据的大小(尤其是高度),以及WebView剩下的大小。从here可以看出,智能横幅的高度可以为32dp50dp90dp中的任何一个。

据我了解,我需要等待AdView的格式确定之后才能呈现WebView。我怎样才能做到这一点?也许是setting an AdListener?但是,AdListener的{​​{3}}似乎只能让我确定例如加载广告后...我不想等待广告加载,只想等待广告的实际尺寸即可。

我知道我可以通过将AdView设置为BANNER,并将其高度固定为50dp来避免所有这些情况,并且确实可以正常工作。但是我更喜欢SMART_BANNER,主要是因为它可以在小手机屏幕上以横向模式将高度缩小到32dp,从而为实际内容留出更多空间。

1 个答案:

答案 0 :(得分:3)

AdView在实际加载广告之前没有API来检索其大小,并且该类为final,因此您也无法自己实现它。

要动态确定横幅的高度,您需要使用怀疑的AdListener

另一种选择是使用根据设备屏幕高度动态选择的静态值(来自documentation

  

32 dp ,其中高度≤400 dp

     

50 dp ,其中高度> 400 dp且≤720 dp

     

90 dp ,其中高度> 720 dp

(您可以检查this来确定屏幕高度,this one可以在px和dp值之间转换)

例如,您可以在Activity中使用类似的内容:

private int getSmartBannerHeightDp() {
    DisplayMetrics dm = getResources().getDisplayMetrics();
    float screenHeightDp = dm.heightPixels / dm.density;

    return screenHeightDp > 720 ? 90 : screenHeightDp > 400 ? 50 : 32;
}