Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2292031e authored by Adrian Roos's avatar Adrian Roos
Browse files

DisplayCutout: Add xml wrapper for layoutInDisplayCutoutMode

Allows native apps to request a layoutInDisplayCutoutMode without
having to implement a custom NativeActivity subclass.

Change-Id: I0b7fd4624e89fabe177462d615360442f72a1e11
Fixes: 73807928
Test: atest PhoneWindowTest
parent 9371be3b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1549,6 +1549,7 @@ package android {
    field public static final int windowHideAnimation = 16842935; // 0x10100b7
    field public static final int windowIsFloating = 16842839; // 0x1010057
    field public static final int windowIsTranslucent = 16842840; // 0x1010058
    field public static final int windowLayoutInDisplayCutoutMode = 16844167; // 0x1010587
    field public static final int windowLightNavigationBar = 16844140; // 0x101056c
    field public static final int windowLightStatusBar = 16844000; // 0x10104e0
    field public static final int windowMinWidthMajor = 16843606; // 0x1010356
+1 −0
Original line number Diff line number Diff line
@@ -2234,6 +2234,7 @@ public interface WindowManager extends ViewManager {
         * @see #LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
         * @see #LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
         * @see DisplayCutout
         * @see android.R.attr#layoutInDisplayCutoutMode
         */
        @LayoutInDisplayCutoutMode
        public int layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;
+9 −0
Original line number Diff line number Diff line
@@ -2464,6 +2464,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
            decor.setSystemUiVisibility(
                    decor.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
        }
        if (a.hasValue(R.styleable.Window_windowLayoutInDisplayCutoutMode)) {
            int mode = a.getInt(R.styleable.Window_windowLayoutInDisplayCutoutMode, -1);
            if (mode < LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
                    || mode > LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER) {
                throw new UnsupportedOperationException("Unknown windowLayoutInDisplayCutoutMode: "
                        + a.getString(R.styleable.Window_windowLayoutInDisplayCutoutMode));
            }
            params.layoutInDisplayCutoutMode = mode;
        }

        if (mAlwaysReadCloseOnTouchAttr || getContext().getApplicationInfo().targetSdkVersion
                >= android.os.Build.VERSION_CODES.HONEYCOMB) {
+39 −0
Original line number Diff line number Diff line
@@ -2113,6 +2113,45 @@
             Corresponds to setting {@link android.view.View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR} on
             the decor view. -->
        <attr name="windowLightNavigationBar" format="boolean" />

        <!-- Controls how the window is laid out if there is a {@code DisplayCutout}.
        <p>
        Defaults to {@code default}.

        @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
        @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
        @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
        @see android.view.DisplayCutout
        @see android.R.attr#layoutInDisplayCutoutMode -->
        <attr name="windowLayoutInDisplayCutoutMode">
            <!-- The window is allowed to extend into the {@code DisplayCutout} area, only if the
            {@code DisplayCutout} is fully contained within the status bar. Otherwise, the window is
            laid out such that it does not overlap with the {@code DisplayCutout} area.

            @see android.view.DisplayCutout
            @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
            -->
            <enum name="default" value="0" />
            <!-- The window is always allowed to extend into the {@code DisplayCutout} area,
            even if fullscreen or in landscape.
            <p>
            The window must make sure that no important content overlaps with the
            {@link DisplayCutout}.

            @see android.view.DisplayCutout
            @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
            -->
            <enum name="always" value="1" />
            <!-- The window is never allowed to overlap with the DisplayCutout area.
            <p>
            This should be used with windows that transiently set {@code SYSTEM_UI_FLAG_FULLSCREEN}
            to avoid a relayout of the window when the flag is set or cleared.

            @see android.view.DisplayCutout
            @see android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
            -->
            <enum name="never" value="2" />
        </attr>
    </declare-styleable>

    <!-- The set of attributes that describe a AlertDialog's theme. -->
+1 −0
Original line number Diff line number Diff line
@@ -2873,6 +2873,7 @@
      <!-- @hide @SystemApi -->
      <public name="userRestriction" />
      <public name="textFontWeight" />
      <public name="windowLayoutInDisplayCutoutMode" />
    </public-group>

    <public-group type="style" first-id="0x010302e0">
Loading