summaryrefslogtreecommitdiff
path: root/core/java/android/view/InsetsState.java
diff options
context:
space:
mode:
authorTiger Huang <tigerhuang@google.com>2020-02-25 22:24:39 +0800
committerTiger Huang <tigerhuang@google.com>2020-03-02 15:08:20 +0800
commite16645a966a740409de49aa94ce84370936e0579 (patch)
tree60d30a09f43666e3bd86c42fb0602fc4193156e2 /core/java/android/view/InsetsState.java
parent6a9cd11871bfb39c1950e4549b5c93d6a21392dd (diff)
Make display cutout can produce insets
This CL creates InsetsType and InternalInsetsType for display cutout. With this CL, WindowInsets.getSystemWindowInsets() can be compatible with the legacy insets mode. Fix: 149932355 Test: Open an app which has LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS and hides navigation bar on the display which has double display cutout. And check if the app can get the correct result from WindowInsets.getSystemWindowInsets(). Change-Id: I381a083d8c30e1678c835eaf5341e941139aa0d7
Diffstat (limited to 'core/java/android/view/InsetsState.java')
-rw-r--r--core/java/android/view/InsetsState.java35
1 files changed, 32 insertions, 3 deletions
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java
index 8648682aaa2e..c877c454be91 100644
--- a/core/java/android/view/InsetsState.java
+++ b/core/java/android/view/InsetsState.java
@@ -24,6 +24,7 @@ import static android.view.ViewRootImpl.sNewInsetsMode;
import static android.view.WindowInsets.Type.MANDATORY_SYSTEM_GESTURES;
import static android.view.WindowInsets.Type.SIZE;
import static android.view.WindowInsets.Type.SYSTEM_GESTURES;
+import static android.view.WindowInsets.Type.displayCutout;
import static android.view.WindowInsets.Type.ime;
import static android.view.WindowInsets.Type.indexOf;
import static android.view.WindowInsets.Type.isVisibleInsetsType;
@@ -71,6 +72,10 @@ public class InsetsState implements Parcelable {
ITYPE_RIGHT_GESTURES,
ITYPE_TOP_TAPPABLE_ELEMENT,
ITYPE_BOTTOM_TAPPABLE_ELEMENT,
+ ITYPE_LEFT_DISPLAY_CUTOUT,
+ ITYPE_TOP_DISPLAY_CUTOUT,
+ ITYPE_RIGHT_DISPLAY_CUTOUT,
+ ITYPE_BOTTOM_DISPLAY_CUTOUT,
ITYPE_IME
})
public @interface InternalInsetsType {}
@@ -88,8 +93,13 @@ public class InsetsState implements Parcelable {
public static final int ITYPE_TOP_TAPPABLE_ELEMENT = 7;
public static final int ITYPE_BOTTOM_TAPPABLE_ELEMENT = 8;
+ public static final int ITYPE_LEFT_DISPLAY_CUTOUT = 9;
+ public static final int ITYPE_TOP_DISPLAY_CUTOUT = 10;
+ public static final int ITYPE_RIGHT_DISPLAY_CUTOUT = 11;
+ public static final int ITYPE_BOTTOM_DISPLAY_CUTOUT = 12;
+
/** Input method window. */
- public static final int ITYPE_IME = 9;
+ public static final int ITYPE_IME = 13;
static final int LAST_TYPE = ITYPE_IME;
@@ -185,8 +195,8 @@ public class InsetsState implements Parcelable {
final int softInputAdjustMode = legacySoftInputMode & SOFT_INPUT_MASK_ADJUST;
return new WindowInsets(typeInsetsMap, typeMaxInsetsMap, typeVisibilityMap, isScreenRound,
alwaysConsumeSystemBars, cutout, softInputAdjustMode == SOFT_INPUT_ADJUST_RESIZE
- ? systemBars() | ime()
- : systemBars(),
+ ? systemBars() | displayCutout() | ime()
+ : systemBars() | displayCutout(),
sNewInsetsMode == NEW_INSETS_MODE_FULL
&& (legacySystemUiFlags & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0);
}
@@ -358,6 +368,12 @@ public class InsetsState implements Parcelable {
if ((types & Type.CAPTION_BAR) != 0) {
result.add(ITYPE_CAPTION_BAR);
}
+ if ((types & Type.DISPLAY_CUTOUT) != 0) {
+ result.add(ITYPE_LEFT_DISPLAY_CUTOUT);
+ result.add(ITYPE_TOP_DISPLAY_CUTOUT);
+ result.add(ITYPE_RIGHT_DISPLAY_CUTOUT);
+ result.add(ITYPE_BOTTOM_DISPLAY_CUTOUT);
+ }
if ((types & Type.IME) != 0) {
result.add(ITYPE_IME);
}
@@ -388,6 +404,11 @@ public class InsetsState implements Parcelable {
case ITYPE_TOP_TAPPABLE_ELEMENT:
case ITYPE_BOTTOM_TAPPABLE_ELEMENT:
return Type.TAPPABLE_ELEMENT;
+ case ITYPE_LEFT_DISPLAY_CUTOUT:
+ case ITYPE_TOP_DISPLAY_CUTOUT:
+ case ITYPE_RIGHT_DISPLAY_CUTOUT:
+ case ITYPE_BOTTOM_DISPLAY_CUTOUT:
+ return Type.DISPLAY_CUTOUT;
default:
throw new IllegalArgumentException("Unknown type: " + type);
}
@@ -437,6 +458,14 @@ public class InsetsState implements Parcelable {
return "ITYPE_TOP_TAPPABLE_ELEMENT";
case ITYPE_BOTTOM_TAPPABLE_ELEMENT:
return "ITYPE_BOTTOM_TAPPABLE_ELEMENT";
+ case ITYPE_LEFT_DISPLAY_CUTOUT:
+ return "ITYPE_LEFT_DISPLAY_CUTOUT";
+ case ITYPE_TOP_DISPLAY_CUTOUT:
+ return "ITYPE_TOP_DISPLAY_CUTOUT";
+ case ITYPE_RIGHT_DISPLAY_CUTOUT:
+ return "ITYPE_RIGHT_DISPLAY_CUTOUT";
+ case ITYPE_BOTTOM_DISPLAY_CUTOUT:
+ return "ITYPE_BOTTOM_DISPLAY_CUTOUT";
case ITYPE_IME:
return "ITYPE_IME";
default: