diff options
author | Jon Miranda <jonmiranda@google.com> | 2022-01-20 13:48:40 -0800 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-14 23:13:13 +0000 |
commit | e44c403710e5942d6d2032dc20d0639cb984eef1 (patch) | |
tree | 53ee666533d50763f97b3f726878d56b8f2432d4 | |
parent | 3db7cd137e8e342d7eb6aa6f04fea03088ac7976 (diff) |
Fix bug where back swipe to icon in All Apps search result.
Issue is that All Apps is scaling during the animation, so when
FloatingIconView looks for it in the view hierarchy,
it's not in its final position.
This would be the cleanest approach for a scv2 fix
Bug: 213306709
Test: manual
Change-Id: Iaec77d15c9533edccd9c82164143af8fa522158f
Merged-In: Iaec77d15c9533edccd9c82164143af8fa522158f
(cherry picked from commit db767aa5757878ff37b82951b1bda71be1c9be4f)
Merged-In:Iaec77d15c9533edccd9c82164143af8fa522158f
-rw-r--r-- | quickstep/src/com/android/launcher3/QuickstepTransitionManager.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index 6e2fadd7d3..49b2cc5894 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -367,7 +367,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener if (launcherClosing) { // Delay animation by a frame to avoid jank. Pair<AnimatorSet, Runnable> launcherContentAnimator = - getLauncherContentAnimator(true /* isAppOpening */, startDelay); + getLauncherContentAnimator(true /* isAppOpening */, startDelay, false); anim.play(launcherContentAnimator.first); anim.addListener(new AnimatorListenerAdapter() { @Override @@ -464,9 +464,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener * @param isAppOpening True when this is called when an app is opening. * False when this is called when an app is closing. * @param startDelay Start delay duration. + * @param skipAllAppsScale True if we want to avoid scaling All Apps */ private Pair<AnimatorSet, Runnable> getLauncherContentAnimator(boolean isAppOpening, - int startDelay) { + int startDelay, boolean skipAllAppsScale) { AnimatorSet launcherAnimator = new AnimatorSet(); Runnable endListener; @@ -484,7 +485,6 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener final float startAlpha = appsView.getAlpha(); final float startScale = SCALE_PROPERTY.get(appsView); appsView.setAlpha(alphas[0]); - SCALE_PROPERTY.set(appsView, scales[0]); ObjectAnimator alpha = ObjectAnimator.ofFloat(appsView, View.ALPHA, alphas); alpha.setDuration(CONTENT_ALPHA_DURATION); @@ -496,12 +496,16 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener appsView.setLayerType(View.LAYER_TYPE_NONE, null); } }); - ObjectAnimator scale = ObjectAnimator.ofFloat(appsView, SCALE_PROPERTY, scales); - scale.setInterpolator(AGGRESSIVE_EASE); - scale.setDuration(CONTENT_SCALE_DURATION); + + if (!skipAllAppsScale) { + SCALE_PROPERTY.set(appsView, scales[0]); + ObjectAnimator scale = ObjectAnimator.ofFloat(appsView, SCALE_PROPERTY, scales); + scale.setInterpolator(AGGRESSIVE_EASE); + scale.setDuration(CONTENT_SCALE_DURATION); + launcherAnimator.play(scale); + } launcherAnimator.play(alpha); - launcherAnimator.play(scale); endListener = () -> { appsView.setAlpha(startAlpha); @@ -1565,6 +1569,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener || mLauncher.getWorkspace().isOverlayShown(); boolean playWorkspaceReveal = true; + boolean skipAllAppsScale = false; if (mFromUnlock) { anim.play(getUnlockWindowAnimator(appTargets, wallpaperTargets)); } else if (ENABLE_BACK_SWIPE_HOME_ANIMATION.get() @@ -1579,6 +1584,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener true /* animateOverviewScrim */, launcherView).getAnimators()); // We play StaggeredWorkspaceAnim as a part of the closing window animation. playWorkspaceReveal = false; + } else { + // Skip scaling all apps, otherwise FloatingIconView will get wrong + // layout bounds. + skipAllAppsScale = true; } } else { anim.play(getFallbackClosingWindowAnimators(appTargets)); @@ -1600,7 +1609,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener if (mLauncher.isInState(LauncherState.ALL_APPS)) { Pair<AnimatorSet, Runnable> contentAnimator = - getLauncherContentAnimator(false, LAUNCHER_RESUME_START_DELAY); + getLauncherContentAnimator(false, LAUNCHER_RESUME_START_DELAY, + skipAllAppsScale); anim.play(contentAnimator.first); anim.addListener(new AnimatorListenerAdapter() { @Override |