Fix the logic of canceling previous scheduled fade in animation.
animateBoundsImpl() gets called twice when swiping up to home in portrait mode (one time for initial pip, one time for replacing it above shelf), while it only gets called once in other scenarios. The current implementation assumes that it gets called twice, so it doesn't correctly handle those one standalone call scenarios. Test: Manual Test: atest PinnedStackTests Fixes: 133507275 Change-Id: I3df26ac8ed2c85ff4f1a8c4410a9a8a8f0d70f28
This commit is contained in:
@@ -410,7 +410,7 @@ public class BoundsAnimationController {
|
||||
@VisibleForTesting
|
||||
boolean animatingToLargerSize() {
|
||||
// TODO: Fix this check for aspect ratio changes
|
||||
return (mFrom.width() * mFrom.height() <= mTo.width() * mTo.height());
|
||||
return (mFrom.width() * mFrom.height() < mTo.width() * mTo.height());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -453,16 +453,10 @@ public class BoundsAnimationController {
|
||||
boolean moveFromFullscreen, boolean moveToFullscreen,
|
||||
@AnimationType int animationType) {
|
||||
final BoundsAnimator existing = mRunningAnimations.get(target);
|
||||
// animateBoundsImpl gets called twice for each animation. The second time we get the final
|
||||
// to rect that respects the shelf, which is when we want to resize. Our signal for fade in
|
||||
// comes in from how to enter into pip, but we also need to use the to and from rect to
|
||||
// decide which animation we want to run finally.
|
||||
boolean shouldResize = false;
|
||||
if (isRunningFadeInAnimation(target)) {
|
||||
shouldResize = true;
|
||||
if (from.contains(to)) {
|
||||
animationType = FADE_IN;
|
||||
}
|
||||
|
||||
if (isRunningFadeInAnimation(target) && from.width() == to.width()
|
||||
&& from.height() == to.height()) {
|
||||
animationType = FADE_IN;
|
||||
}
|
||||
final boolean replacing = existing != null;
|
||||
@SchedulePipModeChangedState int prevSchedulePipModeChangedState =
|
||||
@@ -523,9 +517,10 @@ public class BoundsAnimationController {
|
||||
// Since we are replacing, we skip both animation start and end callbacks
|
||||
existing.cancel();
|
||||
}
|
||||
if (shouldResize) {
|
||||
if (animationType == FADE_IN) {
|
||||
target.setPinnedStackSize(to, null);
|
||||
}
|
||||
|
||||
final BoundsAnimator animator = new BoundsAnimator(target, animationType, from, to,
|
||||
schedulePipModeChangedState, prevSchedulePipModeChangedState,
|
||||
moveFromFullscreen, moveToFullscreen, frozenTask);
|
||||
|
||||
Reference in New Issue
Block a user