确定 Unity for Android 中 Admob SmartBanner 的实际高度



所以我正在我的Unity 4.6 Android游戏中实现admob横幅。我在底部有横幅,需要在我的 UI 中说明它。具体来说,我需要确切地知道它有多高,但我很难弄清楚这一点。

根据此处找到的信息,智能横幅应为 32、50 或 90 像素高,具体取决于设备高度。不过,情况似乎并非如此。

一些搜索似乎表明这是因为密度像素。所以我尝试使用 px = dp * (Screen.dpi/160) 来转换规定的像素高度。因此,例如,如果我确定横幅高度应为 90 像素,我将使用 bannerHeight = 90 * (Screen.dpi/160)。这似乎适用于某些设备,但不适用于其他设备。

例如,我的Nexus 4的DPI为320。使用上述内容似乎表明横幅应为 180 像素高,但横幅实际上似乎约为 90 像素高。但是在Nexus 7(dpi为166)上,当公式指示它应该是~93时,横幅似乎大约120像素高。

所以我想我不知道如何弄清楚横幅实际上会有多高,而且我还没有找到从 API 获取这些信息的方法。我调用横幅的代码非常存量:

 string adUnitId = "my_id";
 BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);
 AdRequest request = new AdRequest.Builder().Build();
 bannerView.LoadAd(request);

首先,您需要计算Google会给您哪些广告(32,50或90?为此,您可以通过屏幕尺寸进行计算。

高度/dpi = 实际高度(英寸)

所以,谷歌说高于720(dp为160dpi)是绝对的720/160 = 4.5 英寸高度,高于此高度,广告为 90 像素 (dp!低于 50 dp!400/160 = 2.5 ,低于此值,广告将为 32 dp

所以!如果我有 3x1920x1080 的小米 Mi1080那是1920/480dpi = 4英寸高度。这将为我们提供 50 个 DP 广告。

使用将DP转换为像素的公式

px = dp * (屏幕.dpi/160)

广告的高度为 50 * (480/160) = 150 像素!

对于横向,您需要使用"高度"1080 而不是 19201080/480dpi = 2.25 横向高度这意味着广告将是 32 像素 DP

转换为:

32* (480/160) = 96 pixels in landscape

太糟糕了,谷歌没有给出足够多的例子,所以我们真的可以检查自己。

您的信息页面是:

https://developers.google.com/admob/android/banner

有答案:https://stackoverflow.com/a/14204959/1900546

int heightPixels = AdSize.SMART_BANNER.getHeightInPixels(this);

以下功能可能会对使用 Admob 智能横幅广告的用户派上用场:

public static float adHeight(){
    float f = Screen.dpi / 160f;
    float dp = Screen.height / f;
    return (dp>720f)? 90f * f
          :(dp>400f)? 50f * f
          :32f * f;
}

要使用它:

r.offsetMin = new Vector2(r.offsetMin.x, adHeight());

其中 r 是全屏画布/面板的矩形变换。

我正在将"loadBannerAd"脚本附加到每个需要它的面板上。

您提供的链接显示智能横幅的高度为

  1. 32 dp 用于横向手机
  2. 纵向手机为 50 dp
  3. 90 dp 用于任一方向的平板电脑

让我们以你给出的两个例子为例。

Nexus 4的DPI为~320 dp。鉴于它是一部手机,它将有一个高度为 50 dp 的广告。使用该公式,它可以计算出 50 * 320/160 = 100 像素(接近您的实际横幅高度)

我查找的Nexus 7s具有216 dp(2012)或323 dp(2013),所以我不太知道哪个型号具有166 dp。
但让我们假设它是 216 dp,那么作为平板电脑,dp 中的广告高度是 90。因此,像素 = 90 * 216/160 = 121.5,再次接近横幅的实际高度。

我意识到谷歌也提到了以下内容

  1. 对于高度介于 400 和 720 之间的设备,系统会使用高度为 50
  2. 的广告
  3. 对于高度高于 720 的设备,系统会使用高度为 90 的广告。

但是,我相信400和720也可以用dp表示,即mdpi设备中的400像素。您的 Nexus 4 是高度为 1280 像素的 xhdpi 设备 (320 dp),则与高度为 640 像素的 mdpi 设备相同,在广告高度为 50 dp 的范围内。

最重要的是,你的计算似乎是有效的。坚持第一组规则,您应该会看到一致的结果。

bannerView.SetPosition(AdPosition.Top); 

或类似的东西是你如何改变活动横幅的位置

最新更新