getDisplayCutout()我的全屏 Java 应用程序有问题。我似乎只能在onAttachedToWindow函数中获取 DisplayCutout 的值。该功能完成后,我再也无法获得它。获取切口的代码:
WindowInsets insets = myActivity.getWindow().getDecorView().getRootWindowInsets();
if (insets != null) {
DisplayCutout displayCutout = insets.getDisplayCutout();
if (displayCutout != null && displayCutout.getBoundingRects().size() > 0) {
// we have cutouts to deal with
}
}
Run Code Online (Sandbox Code Playgroud)
一旦附加到视图层次结构,如何从代码中的任何位置可靠地获取显示切口?
经过大量调查,我将其范围缩小到全屏应用程序的一个非常广泛的问题,我很惊讶没有其他人询问它。事实上,我们可以忽略我的应用程序,只需处理两个模板项目,您现在就可以自己制作。
在 Android Studio 中,我谈论的是名为“基本活动”和“全屏活动”的手机和平板电脑项目。如果您创建其中之一,并进行以下更改:
对于 Basic,更改 Manifest 以通过android:configChanges="orientation|keyboardHidden|screenSize"在 Activity 标签下添加自己来处理配置更改,如下所示:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme.NoActionBar">
Run Code Online (Sandbox Code Playgroud)
现在,将以下两个函数添加到活动文件中:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
WindowInsets insets = getWindow().getDecorView().getRootWindowInsets();
if (insets != null) {
DisplayCutout displayCutout = insets.getDisplayCutout(); …Run Code Online (Sandbox Code Playgroud)