Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb3460c0 authored by Tony Wickham's avatar Tony Wickham
Browse files

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
parent 7ef54561
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -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) {
            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_FADE, DEACCEL_1_7);
                }
            } 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);
            }

+1 −35
Original line number Diff line number Diff line
@@ -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);
            }
        }
    }
}
+1 −11
Original line number Diff line number Diff line
@@ -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<BaseQuickstepLauncher, Laun

    @Override
    public void startHome() {
        Runnable onReachedHome = () -> 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