因此,我在我的Unity 4.6 Android游戏中实现了admob横幅。我有在底部的横幅,并需要在我的UI中它的帐户。具体地说,我需要知道它到底有多高,但我在弄清楚这个问题上遇到了麻烦。
根据找到的信息,here智能横幅应为32、50或90像素高,具体取决于设备高度。然而,这似乎不是典型的情况。
一些搜索似乎表明这是由于密度像素造成的。因此,我尝试使用px = dp * (Screen.dpi/ 160)转换声明的像素高度。因此,例如,如果我确定横幅高度应为90像素,我将使用bannerHeight = 90 * (Screen.dpi / 160)。这似乎在一些设备上有效,但在其他设备上无效。
例如,我的Nexus4的DPI为320。使用上面的内容似乎表明横幅应该是180像素高,但实际上横幅看起来大约是90像素高。但在Nexus 7( dpi为166)上,横幅似乎有大约120像素高,而公式表明它应该是~93。
因此,我想我不知道如何计算出横幅实际有多高,我也没有找到从API获取此信息的方法。我调用横幅的代码是非常常用的:
string adUnitId = "my_id";
BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);
AdRequest request = new AdRequest.Builder().Build();
bannerView.LoadAd(request);发布于 2015-07-06 15:43:58
首先,您需要计算google将为您提供哪些广告(32、50或90 ?)为此,您可以通过屏幕大小来计算它。
高度/dpi=实际高度(英寸)
因此,谷歌表示,高于720 ( dp为160dpi)等于720/160 = 4.5英寸高,高于这个高度,广告是90像素(dp!)低于其50 dp!400/160 = 2.5,低于此值,ads将为32 dp
所以!如果我有1920x1080的小米mi3,那么1920/480dpi =4英寸的height..which将为我们提供50个dp广告。
使用将DP转换为像素的公式
px = dp *(屏幕.dpi/ 160)
50 * (480/160) = 150像素高度的广告!
对于景观,你需要使用" height“1080而不是1920 1080/480dpi = 2.25,这意味着广告将是32像素的dp
它将转换为:
32* (480/160) = 96 pixels in landscape太糟糕了,谷歌没有给出足够的例子,所以我们可以真正检查自己。
您的信息页面是:
发布于 2016-01-04 21:23:27
答案是:https://stackoverflow.com/a/14204959/1900546
int heightPixels = AdSize.SMART_BANNER.getHeightInPixels(this);发布于 2019-04-30 16:59:31
以下功能可能对使用Admob Smart Banner的用户很有用:
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是全屏画布/面板的RectTransform。
我附加了一个'loadBannerAd‘脚本到每个需要它的面板。
https://stackoverflow.com/questions/27761974
复制相似问题