diff options
5 files changed, 43 insertions, 5 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index b47298202d61..2077af86a653 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -135,7 +135,10 @@ android_library { aconfig_declarations { name: "systemui_aconfig_flags", package: "com.android.systemui.aconfig", - srcs: ["src/com/android/systemui/aconfig/systemui.aconfig"], + srcs: [ + "src/com/android/systemui/aconfig/systemui.aconfig", + "src/com/android/systemui/accessibility/aconfig/accessibility.aconfig", + ], } java_aconfig_library { diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig b/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig new file mode 100644 index 000000000000..91c55510608a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig @@ -0,0 +1,7 @@ +package: "com.android.systemui.aconfig" +flag { + name: "floating_menu_overlaps_nav_bars_flag" + namespace: "accessibility" + description: "Adjusts bounds to allow the floating menu to render on top of navigation bars." + bug: "283768342" +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java index 47770fa28b79..f29077d00439 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java @@ -38,6 +38,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate; import com.android.internal.accessibility.dialog.AccessibilityTarget; +import com.android.systemui.aconfig.Flags; import java.util.ArrayList; import java.util.Collections; @@ -284,6 +285,22 @@ class MenuView extends FrameLayout implements void updateMenuMoveToTucked(boolean isMoveToTucked) { mIsMoveToTucked = isMoveToTucked; mMenuViewModel.updateMenuMoveToTucked(isMoveToTucked); + + if (Flags.floatingMenuOverlapsNavBarsFlag()) { + if (isMoveToTucked) { + final float halfWidth = getMenuWidth() / 2.0f; + final boolean isOnLeftSide = mMenuAnimationController.isOnLeftSide(); + final Rect clipBounds = new Rect( + (int) (!isOnLeftSide ? 0 : halfWidth), + 0, + (int) (!isOnLeftSide ? halfWidth : getMenuWidth()), + getMenuHeight() + ); + setClipBounds(clipBounds); + } else { + setClipBounds(null); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java index 3cd250fb4575..3822936d5d8e 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java @@ -35,6 +35,7 @@ import android.view.WindowMetrics; import androidx.annotation.DimenRes; import com.android.systemui.R; +import com.android.systemui.aconfig.Flags; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -154,8 +155,10 @@ class MenuViewAppearance { final int margin = getMenuMargin(); final Rect draggableBounds = new Rect(getWindowAvailableBounds()); - // Initializes start position for mapping the translation of the menu view. - draggableBounds.offsetTo(/* newLeft= */ 0, /* newTop= */ 0); + if (!Flags.floatingMenuOverlapsNavBarsFlag()) { + // Initializes start position for mapping the translation of the menu view. + draggableBounds.offsetTo(/* newLeft= */ 0, /* newTop= */ 0); + } draggableBounds.top += margin; draggableBounds.right -= getMenuWidth(); diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java index c52ecc59c026..cc18c305a112 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java @@ -24,6 +24,7 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; +import com.android.systemui.aconfig.Flags; import com.android.systemui.util.settings.SecureSettings; /** @@ -77,8 +78,15 @@ class MenuViewLayerController implements IAccessibilityFloatingMenu { params.receiveInsetsIgnoringZOrder = true; params.privateFlags |= PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION; params.windowAnimations = android.R.style.Animation_Translucent; - params.setFitInsetsTypes( - WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout()); + // Insets are configured to allow the menu to display over navigation and system bars. + if (Flags.floatingMenuOverlapsNavBarsFlag()) { + params.setFitInsetsTypes(0); + params.layoutInDisplayCutoutMode = + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; + } else { + params.setFitInsetsTypes( + WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout()); + } return params; } } |