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

Commit cf1dc294 authored by Luca Zuccarini's avatar Luca Zuccarini Committed by Automerger Merge Worker
Browse files

Merge "Update the NORMAL<->ALL_APPS swipe transitions on phones." into tm-dev am: 3eb149b0

parents a1337011 3eb149b0
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ import com.android.launcher3.util.Themes;
 */
public class AllAppsState extends LauncherState {

    private static final float WORKSPACE_SCALE_FACTOR = 0.97f;

    private static final int STATE_FLAGS =
            FLAG_WORKSPACE_INACCESSIBLE | FLAG_CLOSE_POPUPS | FLAG_HOTSEAT_INACCESSIBLE;

@@ -58,7 +60,7 @@ public class AllAppsState extends LauncherState {

    @Override
    public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
        return new ScaleAndTranslation(0.97f, NO_OFFSET, NO_OFFSET);
        return new ScaleAndTranslation(WORKSPACE_SCALE_FACTOR, NO_OFFSET, NO_OFFSET);
    }

    @Override
@@ -69,7 +71,7 @@ public class AllAppsState extends LauncherState {
            ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW
                    .getWorkspaceScaleAndTranslation(launcher);
            return new ScaleAndTranslation(
                    NO_SCALE,
                    WORKSPACE_SCALE_FACTOR,
                    overviewScaleAndTranslation.translationX,
                    overviewScaleAndTranslation.translationY);
        }
+70 −18
Original line number Diff line number Diff line
@@ -25,9 +25,17 @@ 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.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_SCALE;

import android.view.MotionEvent;
import android.view.animation.Interpolator;

import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
@@ -70,6 +78,28 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
     */
    public static final float ALL_APPS_SCRIM_OPAQUE_THRESHOLD = .5f;

    // Custom timing for NORMAL -> ALL_APPS on phones only.
    private static final float ALL_APPS_STATE_TRANSITION = 0.4f;

    // Custom interpolators for NORMAL -> ALL_APPS on phones only.
    private static final Interpolator LINEAR_EARLY =
            Interpolators.clampToProgress(LINEAR, 0f, ALL_APPS_STATE_TRANSITION);
    private static final Interpolator STEP_TRANSITION =
            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION);
    public static final Interpolator BLUR = LINEAR_EARLY;
    public static final Interpolator WORKSPACE_FADE = STEP_TRANSITION;
    public static final Interpolator WORKSPACE_SCALE = LINEAR_EARLY;
    public static final Interpolator HOTSEAT_FADE = STEP_TRANSITION;
    public static final Interpolator HOTSEAT_SCALE = LINEAR_EARLY;
    public static final Interpolator HOTSEAT_TRANSLATE = STEP_TRANSITION;
    public static final Interpolator SCRIM_FADE = LINEAR_EARLY;
    public static final Interpolator ALL_APPS_FADE =
            Interpolators.clampToProgress(LINEAR, ALL_APPS_STATE_TRANSITION, 1f);
    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS =
            Interpolators.clampToProgress(
                    Interpolators.mapToProgress(LINEAR, ALL_APPS_STATE_TRANSITION, 1.0f),
                    ALL_APPS_STATE_TRANSITION, 1.0f);

    private final PortraitOverviewStateTouchHelper mOverviewPortraitStateTouchHelper;

    public PortraitStatesTouchController(Launcher l) {
@@ -127,29 +157,51 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr

    private StateAnimationConfig getNormalToAllAppsAnimation() {
        StateAnimationConfig builder = new StateAnimationConfig();
        boolean isTablet = mLauncher.getDeviceProfile().isTablet;
        builder.setInterpolator(ANIM_ALL_APPS_FADE, isTablet
                ? INSTANT
                : Interpolators.clampToProgress(LINEAR,
                        ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD,
                        ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD));
        builder.setInterpolator(ANIM_SCRIM_FADE, Interpolators.clampToProgress(LINEAR,
        if (mLauncher.getDeviceProfile().isTablet) {
            builder.setInterpolator(ANIM_ALL_APPS_FADE, INSTANT);
            builder.setInterpolator(ANIM_SCRIM_FADE,
                    Interpolators.clampToProgress(LINEAR,
                            ALL_APPS_SCRIM_VISIBLE_THRESHOLD,
                            ALL_APPS_SCRIM_OPAQUE_THRESHOLD));
        } else {
            // TODO(b/231682175): centralize this setup in AllAppsSwipeController.
            builder.setInterpolator(ANIM_DEPTH, BLUR);
            builder.setInterpolator(ANIM_WORKSPACE_FADE, WORKSPACE_FADE);
            builder.setInterpolator(ANIM_WORKSPACE_SCALE, WORKSPACE_SCALE);
            builder.setInterpolator(ANIM_HOTSEAT_FADE, HOTSEAT_FADE);
            builder.setInterpolator(ANIM_HOTSEAT_SCALE, HOTSEAT_SCALE);
            builder.setInterpolator(ANIM_HOTSEAT_TRANSLATE, HOTSEAT_TRANSLATE);
            builder.setInterpolator(ANIM_SCRIM_FADE, SCRIM_FADE);
            builder.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_FADE);
            builder.setInterpolator(ANIM_VERTICAL_PROGRESS, ALL_APPS_VERTICAL_PROGRESS);
        }
        return builder;
    }

    private StateAnimationConfig getAllAppsToNormalAnimation() {
        StateAnimationConfig builder = new StateAnimationConfig();
        boolean isTablet = mLauncher.getDeviceProfile().isTablet;
        builder.setInterpolator(ANIM_ALL_APPS_FADE, isTablet
                ? FINAL_FRAME
                : Interpolators.clampToProgress(LINEAR,
                        1 - ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD,
                        1 - ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD));
        builder.setInterpolator(ANIM_SCRIM_FADE, Interpolators.clampToProgress(LINEAR,
        if (mLauncher.getDeviceProfile().isTablet) {
            builder.setInterpolator(ANIM_ALL_APPS_FADE, FINAL_FRAME);
            builder.setInterpolator(ANIM_SCRIM_FADE,
                    Interpolators.clampToProgress(LINEAR,
                            1 - ALL_APPS_SCRIM_OPAQUE_THRESHOLD,
                            1 - ALL_APPS_SCRIM_VISIBLE_THRESHOLD));
        } else {
            // These interpolators are the reverse of the ones used above, so swiping out of All
            // Apps feels the same as swiping into it.
            // TODO(b/231682175): centralize this setup in AllAppsSwipeController.
            builder.setInterpolator(ANIM_DEPTH, Interpolators.reverse(BLUR));
            builder.setInterpolator(ANIM_WORKSPACE_FADE, Interpolators.reverse(WORKSPACE_FADE));
            builder.setInterpolator(ANIM_WORKSPACE_SCALE, Interpolators.reverse(WORKSPACE_SCALE));
            builder.setInterpolator(ANIM_HOTSEAT_FADE, Interpolators.reverse(HOTSEAT_FADE));
            builder.setInterpolator(ANIM_HOTSEAT_SCALE, Interpolators.reverse(HOTSEAT_SCALE));
            builder.setInterpolator(ANIM_HOTSEAT_TRANSLATE,
                    Interpolators.reverse(HOTSEAT_TRANSLATE));
            builder.setInterpolator(ANIM_SCRIM_FADE, Interpolators.reverse(SCRIM_FADE));
            builder.setInterpolator(ANIM_ALL_APPS_FADE, Interpolators.reverse(ALL_APPS_FADE));
            builder.setInterpolator(ANIM_VERTICAL_PROGRESS,
                    Interpolators.reverse(ALL_APPS_VERTICAL_PROGRESS));
        }
        return builder;
    }

+10 −0
Original line number Diff line number Diff line
@@ -208,4 +208,14 @@ public class Interpolators {
            float upperBound) {
        return t -> Utilities.mapRange(interpolator.getInterpolation(t), lowerBound, upperBound);
    }

    /**
     * Returns the reverse of the provided interpolator, following the formula: g(x) = 1 - f(1 - x).
     * In practice, this means that if f is an interpolator used to model a value animating between
     * m and n, g is the interpolator to use to obtain the specular behavior when animating from n
     * to m.
     */
    public static Interpolator reverse(Interpolator interpolator) {
        return t -> 1 - interpolator.getInterpolation(1 - t);
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static com.android.launcher3.anim.Interpolators.LINEAR;
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_HOTSEAT_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
@@ -66,6 +67,7 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController {
                    EMPHASIZED_DECELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
    public static final Interpolator HOTSEAT_FADE =
            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION);
    public static final Interpolator HOTSEAT_SCALE = HOTSEAT_FADE;
    public static final Interpolator HOTSEAT_TRANSLATE =
            Interpolators.clampToProgress(
                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
@@ -163,6 +165,7 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController {
            config.setInterpolator(ANIM_DEPTH, BLUR);
            config.setInterpolator(ANIM_WORKSPACE_SCALE, WORKSPACE_SCALE);
            config.setInterpolator(ANIM_HOTSEAT_FADE, HOTSEAT_FADE);
            config.setInterpolator(ANIM_HOTSEAT_SCALE, HOTSEAT_SCALE);
            config.setInterpolator(ANIM_HOTSEAT_TRANSLATE, HOTSEAT_TRANSLATE);
            config.setInterpolator(ANIM_SCRIM_FADE, SCRIM_FADE);
            config.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_FADE);
+3 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.launcher3.util.Themes;
public class AllAppsState extends LauncherState {

    private static final float PARALLAX_COEFFICIENT = .125f;
    private static final float WORKSPACE_SCALE_FACTOR = 0.97f;

    private static final int STATE_FLAGS = FLAG_WORKSPACE_INACCESSIBLE;

@@ -59,7 +60,7 @@ public class AllAppsState extends LauncherState {

    @Override
    public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
        return new ScaleAndTranslation(0.97f, NO_OFFSET, NO_OFFSET);
        return new ScaleAndTranslation(WORKSPACE_SCALE_FACTOR, NO_OFFSET, NO_OFFSET);
    }

    @Override
@@ -70,7 +71,7 @@ public class AllAppsState extends LauncherState {
            ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW
                    .getWorkspaceScaleAndTranslation(launcher);
            return new ScaleAndTranslation(
                    NO_SCALE,
                    WORKSPACE_SCALE_FACTOR,
                    overviewScaleAndTranslation.translationX,
                    overviewScaleAndTranslation.translationY);
        }