所以我正在我的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"脚本附加到每个需要它的面板上。
您提供的链接显示智能横幅的高度为
- 32 dp 用于横向手机
- 纵向手机为 50 dp
- 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,再次接近横幅的实际高度。
我意识到谷歌也提到了以下内容
- 对于高度介于 400 和 720 之间的设备,系统会使用高度为 50 的广告
- 对于高度高于 720 的设备,系统会使用高度为 90 的广告。
但是,我相信400和720也可以用dp表示,即mdpi设备中的400像素。您的 Nexus 4 是高度为 1280 像素的 xhdpi 设备 (320 dp),则与高度为 640 像素的 mdpi 设备相同,在广告高度为 50 dp 的范围内。
最重要的是,你的计算似乎是有效的。坚持第一组规则,您应该会看到一致的结果。
bannerView.SetPosition(AdPosition.Top);
或类似的东西是你如何改变活动横幅的位置