2

如何获得设备的缺口切口类型?编辑:因为我的问题对每个人都不是很清楚(我虽然是这样):我正在寻找一个包含设备切口类型的标志或某种枚举。它可能看起来像:“CutoutType_Corner”。我不确定这样的枚举是否存在,我很确定它确实存在。

您可以获得所有侧面的安全边缘插图,以确保缺口(如果有)没有覆盖 UI 的任何部分。(这仅在您通过设置窗口标志 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 使应用程序也填充凹槽左侧和右侧的给定空间时才重要。)

在 android 开发人员选项中,您可以通过以下选择来模拟显示剪切:

  • (没有任何)
  • 角落显示切口
  • (双屏抠图)
  • 高显示切口

这些选项只是为了模拟,但据我所知,它们也提供了与设备确实具有所选切口相同的信息,因此还应该有一种方法可以找到设置类型。

在我的例子中,大部分 UI(但在许多情况下也是如此)水平居中,没有真正触及屏幕的角落。

我想区分“角落”和“高”切口,因为在我的情况下,角落并没有真正占据屏幕的重要部分。-> 如果屏幕是切角,我可以忽略安全边缘插图。

作为一个视觉示例:上面的屏幕来自三星 Galaxy S10,带有一个边角切口,下一个是带有高切口的 Google Pixel 3:

视觉上的切口类型。

“-Example-”安装在角落切口屏幕上,而它被高切口覆盖。

谢谢!

4

1 回答 1

1

当我试图解决这个任务时,我能找到的唯一合适的 API 是DisplayCutout

val corners = view.rootWindowInsets?.displayCutout?.boundingRects

boundingRects 返回每个角的切口矩形,通过启发式方法,您可以了解您拥有哪种类型的切口。

于 2019-11-25T09:26:22.187 回答