我正在寻找一种方法来确定Android设备是否具有圆角屏幕,最好还能确定圆角的半径。
我的用例是一个由单个全屏OpenGL视图组成的游戏。它在靠近边缘和边框处呈现一些UI元素,以便为游戏本身提供尽可能多的区域。但是当屏幕有圆角时,它们会被部分隐藏,因此需要将它们位置调整。
我正在寻找一种方法来确定Android设备是否具有圆角屏幕,最好还能确定圆角的半径。
我的用例是一个由单个全屏OpenGL视图组成的游戏。它在靠近边缘和边框处呈现一些UI元素,以便为游戏本身提供尽可能多的区域。但是当屏幕有圆角时,它们会被部分隐藏,因此需要将它们位置调整。
Android S
开发者预览版通过 WindowInsets.getRoundedCorner(int position)
添加了一个RoundedCorner
API,该API提供了每个圆角的中心点和半径。
参考链接:https://developer.android.com/about/versions/12/features#rounded_corner_apis
截至2019年6月6日的更新:
Android官方支持运行Android 9(API级别28)及更高版本的设备上显示切口。
参考:https://developer.android.com/guide/topics/display-cutout/
目前(2018年5月7日),您只能使用[isRounded()][1]
方法检查物理屏幕是否有圆角(适用于Android Wear),但无法检查屏幕角落是否也有圆角。
我认为只有少数设备具有圆角。因此,最好只检查设备名称并相应地调整布局。
有一个流行的Android库可获取Android设备的市场名称。有关更多信息,请查看此处:https://github.com/jaredrummler/AndroidDeviceNames/
用法:
String deviceName = DeviceName.getDeviceName();
希望这个解决方法能够暂时帮助您。
也许未来所有的设备都会采用圆角屏幕(只是一种假设)。