上图说话
像这样游戏画面是全屏的,UI布局自动避开刘海屏,翻转之后也能适应,我看有的游戏实现了这样的功能,不知道是怎么实现的。
weigth
文档里看到有个 SafeArea 组件,应该是用这个吧,试试
这种判断你让原生去做,然后传结果给你 
小米8也有问题,根节点的bottom变成61.8了,应该是0才对
解决了不?
没有,引擎的SafeArea 组件大概只适配了部分机型,暂时只能两边都空出一些来应对下先。
view.postDelayed(new Runnable() {
@Override
public void run() {
DisplayCutout displayCutout = view.getRootWindowInsets().getDisplayCutout();
Log.i(“cxmyDev”, “SafeInsetBottom:” + displayCutout.getSafeInsetBottom());
Log.i(“cxmyDev”, “SafeInsetLeft:” + displayCutout.getSafeInsetLeft());
Log.i(“cxmyDev”, “SafeInsetRight:” + displayCutout.getSafeInsetRight());
Log.i(“cxmyDev”, “SafeInsetTop:” + displayCutout.getSafeInsetTop());
}
}, 100);
安卓代码.
需要注意的是":
1 (Build.VERSION.SDK_INT >= 28)
2 加了延时是因为 在生成view 的时候立刻获取是会失败的
并且这不是 终极解决方案.不少机型 这个高度 或者 侧边 并不是 很准的感觉.并且 在国内一些机型
是刘海机 并且sdk版本很低的情况也有. 我是一直做出海 只好忽略了这个问题.因为适配的问题主要是测试非常麻烦,谁知道哪个奇葩机型又不对了.等到 差评发现已经很蛋疼了.
我这边暂时的解决是先留黑边了 没办法.
黑边是修改一下
Cocos2dxActivity.java 下的 init()
Field constValue = lp.getClass().getDeclaredField(“LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER”);
field.setInt(lp, constValue.getInt(null));
你用 as 搜一下就出来了 注意修改后 这以后生成的 安卓的原生工程 都是这个配置了.
我跳转过去是在 编辑器 目录下的 java 文件. 你自己注意一下 记得这个问题就好.
最后我写的有点乱 但是一份同门心意吧. 楼上有阴阳怪气的 “说别玩的” 我十分看不过眼.
帮的了就帮,不会也是同门师兄弟,稍顶下贴也好吧.
另外 SafeArea 组建貌似只支持 ios 吧.我只做 安卓 苹果上了一款没量 没有细究~ (修正下看了文档 现在也支持 安卓了 我一直每用他的 估计也是只支持 sdk 支持的版本吧. 这个适配的确很麻烦 机型要多 要测)
另外 表扬一下 unity 这方便 适配的不错~ 目前看着靠谱已经新项目用上.
谢谢解答,对安卓原生编程还不是很了解,还得研究一番。另外我也赞同你的说法,我一向讨论只对事不对人,直话直说,不懂就问,能帮就帮,没必要对别人说些讽刺挖苦的话,谁还不是从不懂到懂走过来的。