Merge "Fix the SysUI dialogs size after rotating" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-05-17 10:10:30 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 5 deletions

View File

@@ -16,7 +16,8 @@
--> -->
<resources> <resources>
<!-- DialogLaunchAnimator --> <!-- DialogLaunchAnimator -->
<item type="id" name="launch_animation_running"/> <item type="id" name="tag_launch_animation_running"/>
<item type="id" name="tag_dialog_background"/>
<!-- ViewBoundsAnimator --> <!-- ViewBoundsAnimator -->
<item type="id" name="tag_animator"/> <item type="id" name="tag_animator"/>

View File

@@ -62,7 +62,7 @@ class DialogLaunchAnimator @JvmOverloads constructor(
positionXInterpolator = ActivityLaunchAnimator.INTERPOLATORS.positionInterpolator positionXInterpolator = ActivityLaunchAnimator.INTERPOLATORS.positionInterpolator
) )
private val TAG_LAUNCH_ANIMATION_RUNNING = R.id.launch_animation_running private val TAG_LAUNCH_ANIMATION_RUNNING = R.id.tag_launch_animation_running
} }
/** /**
@@ -447,6 +447,7 @@ private class AnimatedDialog(
dialogContentWithBackground dialogContentWithBackground
} }
this.dialogContentWithBackground = dialogContentWithBackground this.dialogContentWithBackground = dialogContentWithBackground
dialogContentWithBackground.setTag(R.id.tag_dialog_background, true)
val background = dialogContentWithBackground.background val background = dialogContentWithBackground.background
originalDialogBackgroundColor = originalDialogBackgroundColor =
@@ -584,7 +585,7 @@ private class AnimatedDialog(
GhostView.removeGhost(touchSurface) GhostView.removeGhost(touchSurface)
}, },
onLaunchAnimationEnd = { onLaunchAnimationEnd = {
touchSurface.setTag(R.id.launch_animation_running, null) touchSurface.setTag(R.id.tag_launch_animation_running, null)
// We hide the touch surface when the dialog is showing. We will make this // We hide the touch surface when the dialog is showing. We will make this
// view visible again when dismissing the dialog. // view visible again when dismissing the dialog.

View File

@@ -31,6 +31,7 @@ import android.os.Looper;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewRootImpl; import android.view.ViewRootImpl;
import android.view.Window; import android.view.Window;
@@ -376,11 +377,17 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
} }
private static int getHorizontalInsets(Dialog dialog) { private static int getHorizontalInsets(Dialog dialog) {
if (dialog.getWindow().getDecorView() == null) { View decorView = dialog.getWindow().getDecorView();
if (decorView == null) {
return 0; return 0;
} }
Drawable background = dialog.getWindow().getDecorView().getBackground(); // We first look for the background on the dialogContentWithBackground added by
// DialogLaunchAnimator. If it's not there, we use the background of the DecorView.
View viewWithBackground = decorView.findViewByPredicate(
view -> view.getTag(R.id.tag_dialog_background) != null);
Drawable background = viewWithBackground != null ? viewWithBackground.getBackground()
: decorView.getBackground();
Insets insets = background != null ? background.getOpticalInsets() : Insets.NONE; Insets insets = background != null ? background.getOpticalInsets() : Insets.NONE;
return insets.left + insets.right; return insets.left + insets.right;
} }