Loading packages/SystemUI/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -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 { Loading packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig 0 → 100644 +7 −0 Original line number Diff line number Diff line 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 packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java +17 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -154,8 +155,10 @@ class MenuViewAppearance { final int margin = getMenuMargin(); final Rect draggableBounds = new Rect(getWindowAvailableBounds()); 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(); Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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; // 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; } } Loading
packages/SystemUI/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -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 { Loading
packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig 0 → 100644 +7 −0 Original line number Diff line number Diff line 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
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java +17 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } } Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -154,8 +155,10 @@ class MenuViewAppearance { final int margin = getMenuMargin(); final Rect draggableBounds = new Rect(getWindowAvailableBounds()); 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(); Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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; // 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; } }