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

Commit 43e3d450 authored by Luca Zuccarini's avatar Luca Zuccarini
Browse files

Update timings for the Home <> All Apps transition.

Also updates some interpolators to make the manual and atomic
transitions more homogeneous.

Also also updates the commit point so it matches the transition point
between the two states exactly.

Note: the background scale is currently too much, and it needs to be 1/3
of the total distance to match the Workspace scaling. To do this, we
simply scale down the depth by a factor of 3 when calling the background
zoom-out API in the DepthController.

Bug: 254835725
Test: see videos in bug

Change-Id: I605546921e9ee4dfc852794c56495c72f0b916e1
parent 7b467add
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -108,7 +108,10 @@ public class BaseDepthController {
        float depth = mDepth;
        IBinder windowToken = mLauncher.getRootView().getWindowToken();
        if (windowToken != null) {
            mWallpaperManager.setWallpaperZoomOut(windowToken, depth);
            // The API's full zoom-out is three times larger than the zoom-out we apply to the
            // icons. To keep the two consistent throughout the animation while keeping Launcher's
            // concept of full depth unchanged, we divide the depth by 3 here.
            mWallpaperManager.setWallpaperZoomOut(windowToken, depth / 3);
        }

        if (!BlurUtils.supportsBlursOnWindows()) {
+12 −6
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFram

import android.animation.Animator.AnimatorListener;
import android.animation.ValueAnimator;
import android.util.Log;
import android.view.MotionEvent;

import com.android.launcher3.Launcher;
@@ -292,11 +291,18 @@ public abstract class AbstractStateChangeTouchController
                            ? mToState : mFromState;
            // snap to top or bottom using the release velocity
        } else {
            float successTransitionProgress =
                    mLauncher.getDeviceProfile().isTablet
                            && (mToState == ALL_APPS || mFromState == ALL_APPS)
                            ? TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS
                            : SUCCESS_TRANSITION_PROGRESS;
            float successTransitionProgress = SUCCESS_TRANSITION_PROGRESS;
            if (mLauncher.getDeviceProfile().isTablet
                    && (mToState == ALL_APPS || mFromState == ALL_APPS)) {
                successTransitionProgress = TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS;
            } else if (!mLauncher.getDeviceProfile().isTablet
                    && mToState == ALL_APPS && mFromState == NORMAL) {
                successTransitionProgress = AllAppsSwipeController.ALL_APPS_STATE_TRANSITION_MANUAL;
            } else if (!mLauncher.getDeviceProfile().isTablet
                    && mToState == NORMAL && mFromState == ALL_APPS) {
                successTransitionProgress =
                        1 - AllAppsSwipeController.ALL_APPS_STATE_TRANSITION_MANUAL;
            }
            targetState =
                    (interpolatedProgress > successTransitionProgress) ? mToState : mFromState;
        }
+18 −13
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ package com.android.launcher3.touch;

import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.anim.Interpolators.DECELERATED_EASE;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED_ACCELERATE;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
@@ -64,11 +63,14 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController {

    // ---- Custom interpolators for NORMAL -> ALL_APPS on phones only. ----

    private static final float WORKSPACE_MOTION_START_ATOMIC = 0.1667f;
    private static final float ALL_APPS_STATE_TRANSITION_ATOMIC = 0.305f;
    private static final float ALL_APPS_STATE_TRANSITION_MANUAL = 0.4f;
    private static final float ALL_APPS_FADE_END_ATOMIC = 0.4717f;
    public static final float ALL_APPS_STATE_TRANSITION_ATOMIC = 0.3333f;
    public static final float ALL_APPS_STATE_TRANSITION_MANUAL = 0.4f;
    private static final float ALL_APPS_FADE_END_ATOMIC = 0.8333f;
    private static final float ALL_APPS_FADE_END_MANUAL = 0.8f;
    private static final float ALL_APPS_FULL_DEPTH_PROGRESS = 0.5f;
    private static final float SCRIM_FADE_START_ATOMIC = 0.2642f;
    private static final float SCRIM_FADE_START_MANUAL = 0.117f;
    private static final float WORKSPACE_MOTION_START_ATOMIC = 0.1667f;

    private static final Interpolator LINEAR_EARLY_MANUAL =
            Interpolators.clampToProgress(LINEAR, 0f, ALL_APPS_STATE_TRANSITION_MANUAL);
@@ -98,27 +100,30 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController {
    public static final Interpolator HOTSEAT_FADE_ATOMIC = STEP_TRANSITION_ATOMIC;
    public static final Interpolator HOTSEAT_FADE_MANUAL = STEP_TRANSITION_MANUAL;

    public static final Interpolator HOTSEAT_SCALE_ATOMIC = STEP_TRANSITION_ATOMIC;
    public static final Interpolator HOTSEAT_SCALE_MANUAL = LINEAR_EARLY_MANUAL;

    public static final Interpolator HOTSEAT_TRANSLATE_ATOMIC =
    public static final Interpolator HOTSEAT_SCALE_ATOMIC =
            Interpolators.clampToProgress(
                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START_ATOMIC,
                    ALL_APPS_STATE_TRANSITION_ATOMIC);
    public static final Interpolator HOTSEAT_SCALE_MANUAL = LINEAR_EARLY_MANUAL;

    public static final Interpolator HOTSEAT_TRANSLATE_ATOMIC = STEP_TRANSITION_ATOMIC;
    public static final Interpolator HOTSEAT_TRANSLATE_MANUAL = STEP_TRANSITION_MANUAL;

    public static final Interpolator SCRIM_FADE_ATOMIC =
            Interpolators.clampToProgress(
                    Interpolators.mapToProgress(LINEAR, 0f, 0.8f),
                    WORKSPACE_MOTION_START_ATOMIC, ALL_APPS_STATE_TRANSITION_ATOMIC);
    public static final Interpolator SCRIM_FADE_MANUAL = LINEAR_EARLY_MANUAL;
                    SCRIM_FADE_START_ATOMIC, ALL_APPS_STATE_TRANSITION_ATOMIC);
    public static final Interpolator SCRIM_FADE_MANUAL =
            Interpolators.clampToProgress(
                    LINEAR, SCRIM_FADE_START_MANUAL, ALL_APPS_STATE_TRANSITION_MANUAL);

    public static final Interpolator ALL_APPS_FADE_ATOMIC =
            Interpolators.clampToProgress(
                    Interpolators.mapToProgress(DECELERATED_EASE, 0.2f, 1f),
                    Interpolators.mapToProgress(EMPHASIZED_DECELERATE, 0.2f, 1f),
                    ALL_APPS_STATE_TRANSITION_ATOMIC, ALL_APPS_FADE_END_ATOMIC);
    public static final Interpolator ALL_APPS_FADE_MANUAL =
            Interpolators.clampToProgress(LINEAR, ALL_APPS_STATE_TRANSITION_MANUAL, 1f);
            Interpolators.clampToProgress(
                    LINEAR, ALL_APPS_STATE_TRANSITION_MANUAL, ALL_APPS_FADE_END_MANUAL);

    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS_ATOMIC =
            Interpolators.clampToProgress(