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

Commit 6b7accb4 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 9121707 from 888f7454 to tm-qpr1-release

Change-Id: I162b782d4cfcfb01e57a05d524eec980de8fc1b9
parents 53bac7c6 888f7454
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ import com.android.launcher3.anim.PropertySetter;
import com.android.launcher3.states.StateAnimationConfig;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.util.MultiValueAlpha;
import com.android.quickstep.util.AnimUtils;
import com.android.quickstep.util.SplitAnimationTimings;
import com.android.quickstep.views.ClearAllButton;
import com.android.quickstep.views.LauncherRecentsView;
import com.android.quickstep.views.RecentsView;
@@ -123,12 +125,18 @@ public final class RecentsViewStateController extends
                        TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION,
                        mLauncher.getDeviceProfile());

        SplitAnimationTimings timings =
                AnimUtils.getDeviceOverviewToSplitTimings(mLauncher.getDeviceProfile().isTablet);

        mRecentsView.createSplitSelectInitAnimation(builder,
                toState.getTransitionDuration(mLauncher, true /* isToState */));
        // Add properties to shift remaining taskViews to get out of placeholder view
        builder.setFloat(mRecentsView, taskViewsFloat.first,
                toState.getSplitSelectTranslation(mLauncher), LINEAR);
        builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);
                toState.getSplitSelectTranslation(mLauncher),
                timings.getGridSlidePrimaryInterpolator());
        builder.setFloat(mRecentsView, taskViewsFloat.second,
                0,
                timings.getGridSlideSecondaryInterpolator());

        if (!animate) {
            AnimatorSet as = builder.buildAnim();
+5 −2
Original line number Diff line number Diff line
@@ -191,12 +191,15 @@ public class QuickstepAtomicAnimationFactory extends
        } else if (fromState == NORMAL && toState == ALL_APPS) {
            AllAppsSwipeController.applyNormalToAllAppsAnimConfig(mActivity, config);
        } else if (fromState == OVERVIEW && toState == OVERVIEW_SPLIT_SELECT) {
            SplitAnimationTimings timings = SplitAnimationTimings.OVERVIEW_TO_SPLIT;
            SplitAnimationTimings timings = mActivity.getDeviceProfile().isTablet
                    ? SplitAnimationTimings.TABLET_OVERVIEW_TO_SPLIT
                    : SplitAnimationTimings.PHONE_OVERVIEW_TO_SPLIT;
            config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, clampToProgress(LINEAR,
                    timings.getActionsFadeStartOffset(),
                    timings.getActionsFadeEndOffset()));
        } else if (fromState == NORMAL && toState == OVERVIEW_SPLIT_SELECT) {
            SplitAnimationTimings timings = SplitAnimationTimings.NORMAL_TO_SPLIT;
            // Splitting from Home is currently only available on tablets
            SplitAnimationTimings timings = SplitAnimationTimings.TABLET_HOME_TO_SPLIT;
            config.setInterpolator(ANIM_SCRIM_FADE, clampToProgress(LINEAR,
                    timings.getScrimFadeInStartOffset(),
                    timings.getScrimFadeInEndOffset()));
+8 −3
Original line number Diff line number Diff line
@@ -44,8 +44,13 @@ public class SplitScreenSelectState extends OverviewState {

    @Override
    public int getTransitionDuration(Context context, boolean isToState) {
        return isToState
                ? SplitAnimationTimings.ENTER_DURATION
                : SplitAnimationTimings.ABORT_DURATION;
        boolean isTablet = ((Launcher) context).getDeviceProfile().isTablet;
        if (isToState && isTablet) {
            return SplitAnimationTimings.TABLET_ENTER_DURATION;
        } else if (isToState && !isTablet) {
            return SplitAnimationTimings.PHONE_ENTER_DURATION;
        } else {
            return SplitAnimationTimings.ABORT_DURATION;
        }
    }
}
+42 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.quickstep.util;

/**
 * Utility class containing methods to help manage animations, interpolators, and timings.
 */
public class AnimUtils {
    /**
     * Fetches device-specific timings for the Overview > Split animation
     * (splitscreen initiated from Overview).
     */
    public static SplitAnimationTimings getDeviceOverviewToSplitTimings(boolean isTablet) {
        return isTablet
                ? SplitAnimationTimings.TABLET_OVERVIEW_TO_SPLIT
                : SplitAnimationTimings.PHONE_OVERVIEW_TO_SPLIT;
    }

    /**
     * Fetches device-specific timings for the Split > Confirm animation
     * (splitscreen confirmed by selecting a second app).
     */
    public static SplitAnimationTimings getDeviceSplitToConfirmTimings(boolean isTablet) {
        return isTablet
                ? SplitAnimationTimings.TABLET_SPLIT_TO_CONFIRM
                : SplitAnimationTimings.PHONE_SPLIT_TO_CONFIRM;
    }
}
+22 −19
Original line number Diff line number Diff line
@@ -16,27 +16,28 @@

package com.android.quickstep.util;

import static com.android.launcher3.anim.Interpolators.DEACCEL_2;

import android.view.animation.Interpolator;

/**
 * Timings for the Overview > OverviewSplitSelect animation.
 */
public class OverviewToSplitTimings implements SplitAnimationTimings {
    public int getPlaceholderFadeInStart() { return 0; }
    public int getPlaceholderFadeInEnd() { return 133; }
    public int getPlaceholderIconFadeInStart() { return 167; }
    public int getPlaceholderIconFadeInEnd() { return 250; }
    public int getStagedRectSlideStart() { return 0; }
    public int getStagedRectSlideEnd() { return 417; }
    public int getGridSlideStart() { return 67; }
    public int getGridSlideStagger() { return 16; }
    public int getGridSlideDuration() { return 500; }
    public int getActionsFadeStart() { return 0; }
    public int getActionsFadeEnd() { return 83; }
abstract class OverviewToSplitTimings implements SplitAnimationTimings {
    // Overwritten by device-specific timings
    abstract public int getPlaceholderFadeInStart();
    abstract public int getPlaceholderFadeInEnd();
    abstract public int getPlaceholderIconFadeInStart();
    abstract public int getPlaceholderIconFadeInEnd();
    abstract public int getStagedRectSlideStart();
    abstract public int getStagedRectSlideEnd();
    abstract public int getGridSlideStart();
    abstract public int getGridSlideStagger();
    abstract public int getGridSlideDuration();

    // Common timings
    public int getIconFadeStart() { return 0; }
    public int getIconFadeEnd() { return 83; }
    public int getActionsFadeStart() { return 0; }
    public int getActionsFadeEnd() { return 83; }
    public int getInstructionsContainerFadeInStart() { return 167; }
    public int getInstructionsContainerFadeInEnd() { return 250; }
    public int getInstructionsTextFadeInStart() { return 217; }
@@ -44,11 +45,13 @@ public class OverviewToSplitTimings implements SplitAnimationTimings {
    public int getInstructionsUnfoldStart() { return 167; }
    public int getInstructionsUnfoldEnd() { return 500; }

    public int getDuration() { return ENTER_DURATION; }
    public Interpolator getStagedRectXInterpolator() { return DEACCEL_2; }
    public Interpolator getStagedRectYInterpolator() { return DEACCEL_2; }
    public Interpolator getStagedRectScaleXInterpolator() { return DEACCEL_2; }
    public Interpolator getStagedRectScaleYInterpolator() { return DEACCEL_2; }
    abstract public int getDuration();
    abstract public Interpolator getStagedRectXInterpolator();
    abstract public Interpolator getStagedRectYInterpolator();
    abstract public Interpolator getStagedRectScaleXInterpolator();
    abstract public Interpolator getStagedRectScaleYInterpolator();
    abstract public Interpolator getGridSlidePrimaryInterpolator();
    abstract public Interpolator getGridSlideSecondaryInterpolator();

    public float getGridSlideStartOffset() {
        return (float) getGridSlideStart() / getDuration();
Loading