/** * Find the safe area of DisplayCutout. * * @param activity {@link Activity} (Portrait and `windowLayoutInDisplayCutoutMode` != never) * @return Safe cutout insets. */ public static Rect findCutoutSafeArea(@NonNull Activity activity) { final Rect safeInsetRect = new Rect(); // TODO:Rewrite with android-x // TODO:Consider alternatives if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { return safeInsetRect; } // set safeInsetRect final DisplayCutout displayCutout = activity.getWindow().getDecorView().getRootWindowInsets().getDisplayCutout(); if (displayCutout != null) { safeInsetRect.set(displayCutout.getSafeInsetLeft(), displayCutout.getSafeInsetTop(), displayCutout.getSafeInsetRight(), displayCutout.getSafeInsetBottom()); } return safeInsetRect; }
@TargetApi(28) private static boolean attachHasOfficialNotch(View view) { WindowInsets windowInsets = view.getRootWindowInsets(); if (windowInsets != null) { DisplayCutout displayCutout = windowInsets.getDisplayCutout(); return displayCutout != null; } else { throw new IllegalStateException("activity has not yet attach to window, you must call `isCutout` after `Activity#onAttachedToWindow` is called."); } }
data.put("ForegroundGravity", getTranslator().gravity(v.getForegroundGravity())); data.put("ForegroundTintList", String.valueOf(v.getForegroundTintList())); data.put("RootWindowInsets:", String.valueOf(v.getRootWindowInsets()));