Fine-tune the insets type of the menu view layer.

Goal:
Avoid overlapping on the status or navigation bar when using the feature of hiding menu to edge, and easily computing the coordinate, set the fit insets type of the menu view layer as systemBars or display cutout.

Bug: 246664957
Test: manual test
Change-Id: I4954c2c439df771d52ce0dbcc607ab841922603c
This commit is contained in:
Peter Liang
2022-10-31 20:37:35 +08:00
parent 37dca6bea8
commit b8a9165288
2 changed files with 3 additions and 6 deletions

View File

@@ -136,11 +136,7 @@ class MenuViewAppearance {
final Rect draggableBounds = getWindowAvailableBounds();
// Initializes start position for mapping the translation of the menu view.
final WindowMetrics windowMetrics = mWindowManager.getCurrentWindowMetrics();
final WindowInsets windowInsets = windowMetrics.getWindowInsets();
final Insets displayCutoutInsets = windowInsets.getInsetsIgnoringVisibility(
WindowInsets.Type.displayCutout());
draggableBounds.offset(-displayCutoutInsets.left, -displayCutoutInsets.top);
draggableBounds.offsetTo(/* newLeft= */ 0, /* newTop= */ 0);
draggableBounds.top += margin;
draggableBounds.right -= getMenuWidth();

View File

@@ -74,7 +74,8 @@ 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.navigationBars());
params.setFitInsetsTypes(
WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout());
return params;
}
}