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

Commit 81839b86 authored by Tony Wickham's avatar Tony Wickham Committed by Android (Google) Code Review
Browse files

Merge "Change overview animation to scale instead of translationX" into ub-launcher3-master

parents 8f8f279a 0c95559c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -88,10 +88,10 @@ public class AllAppsState extends LauncherState {
    }

    @Override
    public float[] getOverviewTranslationFactor(Launcher launcher) {
        // Keep the same translation as in overview, so that we don't slide around when
    public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
        // Keep the same transition properties as overview, so that we don't move around when
        // transitioning to All Apps.
        return LauncherState.OVERVIEW.getOverviewTranslationFactor(launcher);
        return LauncherState.OVERVIEW.getOverviewScaleAndTranslationYFactor(launcher);
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public class FastOverviewState extends OverviewState {
    }

    @Override
    public float[] getOverviewTranslationFactor(Launcher launcher) {
        return new float[] {0f, 0.5f};
    public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
        return new float[] {1f, 0.5f};
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -58,8 +58,8 @@ public class OverviewState extends LauncherState {
    }

    @Override
    public float[] getOverviewTranslationFactor(Launcher launcher) {
        return new float[] {0f, 0f};
    public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
        return new float[] {1f, 0f};
    }

    @Override
+0 −14
Original line number Diff line number Diff line
@@ -61,9 +61,6 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr

    private InterpolatorWrapper mAllAppsInterpolatorWrapper = new InterpolatorWrapper();

    // If > 0, the animation progress is clamped at that value as long as user is dragging.
    private float mClampProgressUpdate = -1;

    // If true, we will finish the current animation instantly on second touch.
    private boolean mFinishFastOnSecondTouch;

@@ -165,15 +162,6 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
        return builder;
    }

    @Override
    protected void updateProgress(float fraction) {
        if (mClampProgressUpdate > 0) {
            mCurrentAnimation.setPlayFraction(Math.min(fraction, mClampProgressUpdate));
        } else {
            super.updateProgress(fraction);
        }
    }

    @Override
    protected float initCurrentAnimation() {
        float range = getShiftRange();
@@ -189,10 +177,8 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
        if (mFromState == NORMAL && mToState == OVERVIEW && totalShift != 0) {
            builder = getNormalToOverviewAnimation();
            totalShift = totalShift * TOTAL_DISTANCE_MULTIPLIER;
            mClampProgressUpdate = MAXIMUM_DISTANCE_FACTOR;
        } else {
            builder = new AnimatorSetBuilder();
            mClampProgressUpdate = -1;
        }

        if (mPendingAnimation != null) {
+14 −25
Original line number Diff line number Diff line
@@ -15,11 +15,11 @@
 */
package com.android.launcher3.uioverrides;

import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_TRANSLATION;
import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.quickstep.views.LauncherRecentsView.TRANSLATION_X_FACTOR;
import static com.android.quickstep.views.LauncherRecentsView.TRANSLATION_Y_FACTOR;
import static com.android.quickstep.views.RecentsView.ADJACENT_SCALE;
import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;

import android.animation.ValueAnimator;
@@ -30,7 +30,6 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.LauncherStateManager.AnimationConfig;
import com.android.launcher3.LauncherStateManager.StateHandler;
import com.android.launcher3.PagedView;
import com.android.launcher3.anim.AnimatorSetBuilder;
import com.android.launcher3.anim.PropertySetter;
import com.android.quickstep.views.LauncherRecentsView;
@@ -49,9 +48,9 @@ public class RecentsViewStateController implements StateHandler {
    @Override
    public void setState(LauncherState state) {
        mRecentsView.setContentAlpha(state.overviewUi ? 1 : 0);
        float[] translationFactor = state.getOverviewTranslationFactor(mLauncher);
        mRecentsView.setTranslationXFactor(translationFactor[0]);
        mRecentsView.setTranslationYFactor(translationFactor[1]);
        float[] scaleTranslationYFactor = state.getOverviewScaleAndTranslationYFactor(mLauncher);
        mRecentsView.setAdjacentScale(scaleTranslationYFactor[0]);
        mRecentsView.setTranslationYFactor(scaleTranslationYFactor[1]);
        if (state.overviewUi) {
            mRecentsView.updateEmptyMessage();
            mRecentsView.resetTaskVisuals();
@@ -61,28 +60,18 @@ public class RecentsViewStateController implements StateHandler {
    @Override
    public void setStateWithAnimation(final LauncherState toState,
            AnimatorSetBuilder builder, AnimationConfig config) {

        // Scroll to the workspace card before changing to the NORMAL state.
        LauncherState fromState = mLauncher.getStateManager().getState();
        int currPage = mRecentsView.getCurrentPage();
        if (fromState.overviewUi && toState == NORMAL && currPage != 0 && !config.userControlled) {
            int maxSnapDuration = PagedView.SLOW_PAGE_SNAP_ANIMATION_DURATION;
            int durationPerPage = maxSnapDuration / 10;
            int snapDuration = Math.min(maxSnapDuration, durationPerPage * currPage);
            mRecentsView.snapToPage(0, snapDuration);
            // Let the snapping animation play for a bit before we translate off screen.
            builder.setStartDelay(snapDuration / 4);
        }

        PropertySetter setter = config.getProperSetter(builder);
        float[] translationFactor = toState.getOverviewTranslationFactor(mLauncher);
        setter.setFloat(mRecentsView, TRANSLATION_X_FACTOR,
                translationFactor[0],
        float[] scaleTranslationYFactor = toState.getOverviewScaleAndTranslationYFactor(mLauncher);
        setter.setFloat(mRecentsView, ADJACENT_SCALE, scaleTranslationYFactor[0],
                builder.getInterpolator(ANIM_OVERVIEW_TRANSLATION, LINEAR));
        setter.setFloat(mRecentsView, TRANSLATION_Y_FACTOR,
                translationFactor[1],
        setter.setFloat(mRecentsView, TRANSLATION_Y_FACTOR, scaleTranslationYFactor[1],
                builder.getInterpolator(ANIM_OVERVIEW_TRANSLATION, LINEAR));
        setter.setFloat(mRecentsView, CONTENT_ALPHA, toState.overviewUi ? 1 : 0, LINEAR);
        setter.setFloat(mRecentsView, CONTENT_ALPHA, toState.overviewUi ? 1 : 0,
                AGGRESSIVE_EASE_IN_OUT);

        if (!toState.overviewUi) {
            builder.addOnFinishRunnable(mRecentsView::resetTaskVisuals);
        }

        if (toState.overviewUi) {
            ValueAnimator updateAnim = ValueAnimator.ofFloat(0, 1);
Loading