【发布时间】:2019-03-31 12:25:09
【问题描述】:
我正在尝试将我的广告横幅(通过 Unity 的官方 Admob 包生成)放置在屏幕的最底部,但它似乎不适用于带有缺口的设备。
bv = new BannerView(adUnitId, adSize, AdPosition.Bottom);
这行代码在没有缺口的设备(例如 Pixel、Pixel XL、Pixel 2 和 2 XL)上完美地将横幅定位在最底部,但是当设备顶部有一个缺口时看起来像这样:
(演示照片取自this Github Issue。忽略可见的导航栏。)
横幅和屏幕底部之间的空间正好是缺口的高度。我用多个缺口高度对其进行了测试。
为了将banner定位在最底部,我认为最好的解决方案是获取notch的高度,然后使用以下代码行:
new BannerView(adUnitId, adSize, 0, (int)ConvertPixelsToDP(Screen.height - adHeight + notchHeight));
但我找不到任何方法来获得切口高度。我尝试使用 Screen 和 Display 类属性,但没有任何方法可以帮助我获得屏幕的真实分辨率,包括缺口,所以我可以减去 safeArea 高度 - 并获得缺口的确切高度。
有没有办法获得这个真正的屏幕分辨率?或任何其他可能的解决方案?
【问题讨论】:
-
如果你只使用
Screen.height - adHeight会发生什么? -
@ruzihm 它位于底部,但横幅和底部之间的空间等于缺口的高度。
-
只是好奇。如果你这样做
Debug.Log(Screen.height - Screen.safeArea.height);会发生什么?此外,如果您尝试硬编码notchHeight的值,它是否有效?想要确定这种方法是否有效。 -
@Ruzihm
Screen.height - Screen.safeArea.height等于 0,这很奇怪。当对notchHeight的值进行硬编码时,一切正常(我在 Photoshop 中用截图测量了它) -
这绝对不寻常。我会仔细检查您拥有的任何可能环绕
Screen.height的自定义代码,作为干扰事物的“便利”。