diff --git a/core/java/android/view/DisplayCutout.java b/core/java/android/view/DisplayCutout.java
index b6adee9501a6d..66a9c6c01ca40 100644
--- a/core/java/android/view/DisplayCutout.java
+++ b/core/java/android/view/DisplayCutout.java
@@ -51,6 +51,7 @@ public final class DisplayCutout {
private static final String TAG = "DisplayCutout";
private static final String BOTTOM_MARKER = "@bottom";
private static final String DP_MARKER = "@dp";
+ private static final String RIGHT_MARKER = "@right";
/**
* Category for overlays that allow emulating a display cutout on devices that don't have
@@ -373,6 +374,13 @@ public final class DisplayCutout {
}
}
spec = spec.trim();
+ final float offsetX;
+ if (spec.endsWith(RIGHT_MARKER)) {
+ offsetX = displayWidth;
+ spec = spec.substring(0, spec.length() - RIGHT_MARKER.length()).trim();
+ } else {
+ offsetX = displayWidth / 2f;
+ }
final boolean inDp = spec.endsWith(DP_MARKER);
if (inDp) {
spec = spec.substring(0, spec.length() - DP_MARKER.length());
@@ -397,7 +405,7 @@ public final class DisplayCutout {
if (inDp) {
m.postScale(density, density);
}
- m.postTranslate(displayWidth / 2f, 0);
+ m.postTranslate(offsetX, 0);
p.transform(m);
if (bottomSpec != null) {
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/Android.mk b/packages/overlays/DisplayCutoutEmulationCornerOverlay/Android.mk
new file mode 100644
index 0000000000000..74c43b40616fe
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := DisplayCutoutEmulationCorner
+LOCAL_CERTIFICATE := platform
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := DisplayCutoutEmulationCornerOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/AndroidManifest.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/AndroidManifest.xml
new file mode 100644
index 0000000000000..5f7f7c9bd3e43
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/AndroidManifest.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml
new file mode 100644
index 0000000000000..80d8066959afe
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ M 0,0
+ L -48, 0
+ C -48,48 -48,48 0,48
+ Z
+ @dp
+ @right
+
+
+
+ true
+
+
+ 48dp
+ 28dp
+
+ 48dp
+
+ 176dp
+
+
+
+
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/strings.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/strings.xml
new file mode 100644
index 0000000000000..754ba722d081a
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ Corner display cutout
+
+
+