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>
<!-- DialogLaunchAnimator -->
<item type="id" name="launch_animation_running"/>
<item type="id" name="tag_launch_animation_running"/>
<item type="id" name="tag_dialog_background"/>
<!-- ViewBoundsAnimator -->
<item type="id" name="tag_animator"/>

View File

@@ -62,7 +62,7 @@ class DialogLaunchAnimator @JvmOverloads constructor(
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
}
this.dialogContentWithBackground = dialogContentWithBackground
dialogContentWithBackground.setTag(R.id.tag_dialog_background, true)
val background = dialogContentWithBackground.background
originalDialogBackgroundColor =
@@ -584,7 +585,7 @@ private class AnimatedDialog(
GhostView.removeGhost(touchSurface)
},
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
// view visible again when dismissing the dialog.

View File

@@ -31,6 +31,7 @@ import android.os.Looper;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewRootImpl;
import android.view.Window;
@@ -376,11 +377,17 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
}
private static int getHorizontalInsets(Dialog dialog) {
if (dialog.getWindow().getDecorView() == null) {
View decorView = dialog.getWindow().getDecorView();
if (decorView == null) {
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;
return insets.left + insets.right;
}