From bb3460c01fb529fd6010fece7197ed03c3b0fcdc Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 28 Apr 2021 15:17:54 -0700 Subject: [PATCH] Align home/back button from overview with tap outside Set all interpolators in QuickstepAtomicAnimationFactory instead of overriding some in OverviewToHomeAnim. This also means we can just use a normal state transition instead of OverviewToHomeAnim when tapping outside recents (i.e. startHome()). Test: in all three gesture modes, the same animation is played whether tapping outside recents, pressing home, or pressing back Bug: 185411781 Change-Id: Ibe8734e8bd7041943eb76cac30d7cac26a90c73e --- .../QuickstepAtomicAnimationFactory.java | 23 +++++++----- .../quickstep/util/OverviewToHomeAnim.java | 36 +------------------ .../quickstep/views/LauncherRecentsView.java | 12 +------ 3 files changed, 16 insertions(+), 55 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index 3ac78663f7..fd7a67ad79 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -27,12 +27,15 @@ import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL; import static com.android.launcher3.anim.Interpolators.DEACCEL; import static com.android.launcher3.anim.Interpolators.DEACCEL_1_7; import static com.android.launcher3.anim.Interpolators.DEACCEL_3; +import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.anim.Interpolators.FINAL_FRAME; import static com.android.launcher3.anim.Interpolators.INSTANT; +import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2; import static com.android.launcher3.anim.Interpolators.clampToProgress; import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_ACTIONS_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X; @@ -82,17 +85,19 @@ public class QuickstepAtomicAnimationFactory extends config.setInterpolator(ANIM_WORKSPACE_SCALE, DEACCEL); config.setInterpolator(ANIM_WORKSPACE_FADE, ACCEL); config.setInterpolator(ANIM_ALL_APPS_FADE, ACCEL); - config.setInterpolator(ANIM_OVERVIEW_SCALE, clampToProgress(ACCEL, 0, 0.9f)); - config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, ACCEL_DEACCEL); + config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, LINEAR); - if (SysUINavigationMode.getMode(mActivity) == NO_BUTTON) { - // Scrolling in tasks, so make visible straight away - if (overview.getTaskViewCount() > 0) { - config.setInterpolator(ANIM_OVERVIEW_FADE, FINAL_FRAME); - } else { - config.setInterpolator(ANIM_OVERVIEW_FADE, DEACCEL_1_7); - } + if (SysUINavigationMode.getMode(mActivity).hasGestures + && overview.getTaskViewCount() > 0) { + // Overview is going offscreen, so keep it at its current scale and opacity. + config.setInterpolator(ANIM_OVERVIEW_SCALE, FINAL_FRAME); + config.setInterpolator(ANIM_OVERVIEW_FADE, FINAL_FRAME); + config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, + clampToProgress(FAST_OUT_SLOW_IN, 0, 0.75f)); + config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, FINAL_FRAME); } else { + config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, ACCEL_DEACCEL); + config.setInterpolator(ANIM_OVERVIEW_SCALE, clampToProgress(ACCEL, 0, 0.9f)); config.setInterpolator(ANIM_OVERVIEW_FADE, DEACCEL_1_7); } diff --git a/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java b/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java index 42be9bbe13..b427e5fb2c 100644 --- a/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java +++ b/quickstep/src/com/android/quickstep/util/OverviewToHomeAnim.java @@ -17,21 +17,10 @@ package com.android.quickstep.util; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; -import static com.android.launcher3.anim.Interpolators.DEACCEL; -import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; -import static com.android.launcher3.anim.Interpolators.FINAL_FRAME; -import static com.android.launcher3.anim.Interpolators.LINEAR; -import static com.android.launcher3.anim.Interpolators.clampToProgress; -import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_ACTIONS_FADE; -import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE; -import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE; -import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X; -import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y; import android.animation.Animator; import android.animation.AnimatorSet; import android.util.Log; -import android.view.animation.Interpolator; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; @@ -101,18 +90,8 @@ public class OverviewToHomeAnim { numPagesToScroll * PER_PAGE_SCROLL_DURATION); int duration = Math.max(scrollDuration, startState.getTransitionDuration(mLauncher)); - StateAnimationConfig config = new UseFirstInterpolatorStateAnimConfig(); + StateAnimationConfig config = new StateAnimationConfig(); config.duration = duration; - boolean isLayoutNaturalToLauncher = recentsView.getPagedOrientationHandler() - .isLayoutNaturalToLauncher(); - config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, isLayoutNaturalToLauncher - ? clampToProgress(FAST_OUT_SLOW_IN, 0, 0.75f) : FINAL_FRAME); - config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, FINAL_FRAME); - config.setInterpolator(ANIM_OVERVIEW_SCALE, FINAL_FRAME); - config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, LINEAR); - if (!isLayoutNaturalToLauncher) { - config.setInterpolator(ANIM_OVERVIEW_FADE, DEACCEL); - } AnimatorSet stateAnim = stateManager.createAtomicAnimation( startState, NORMAL, config); stateAnim.addListener(new AnimationSuccessListener() { @@ -133,17 +112,4 @@ public class OverviewToHomeAnim { mOnReachedHome.run(); } } - - /** - * Wrapper around StateAnimationConfig that doesn't allow interpolators to be set if they are - * already set. This ensures they aren't overridden before being used. - */ - private static class UseFirstInterpolatorStateAnimConfig extends StateAnimationConfig { - @Override - public void setInterpolator(int animId, Interpolator interpolator) { - if (mInterpolators[animId] == null || interpolator == null) { - super.setInterpolator(animId, interpolator); - } - } - } } diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java index 2c5f66170b..65956d578f 100644 --- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java @@ -21,7 +21,6 @@ import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK; import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT; import static com.android.launcher3.LauncherState.SPRING_LOADED; -import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE; import android.annotation.TargetApi; import android.content.Context; @@ -39,7 +38,6 @@ import com.android.launcher3.statemanager.StateManager.StateListener; import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.LauncherActivityInterface; -import com.android.quickstep.util.OverviewToHomeAnim; import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.RecentsExtraCard; @@ -90,15 +88,7 @@ public class LauncherRecentsView extends RecentsView mActivity.getStateManager().goToState(NORMAL, false); - OverviewToHomeAnim overviewToHomeAnim = new OverviewToHomeAnim(mActivity, onReachedHome); - if (LIVE_TILE.get()) { - switchToScreenshot(null, - () -> finishRecentsAnimation(true /* toRecents */, - () -> overviewToHomeAnim.animateWithVelocity(0))); - } else { - overviewToHomeAnim.animateWithVelocity(0); - } + mActivity.getStateManager().goToState(NORMAL); } @Override