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

Commit f3bfe4e1 authored by Jeremy Sim's avatar Jeremy Sim
Browse files

Update animations for TM-QPR: Home > OverviewSplitSelect transition

This change updates the animation for initiating a split from the home screen. Also fixes a bug where icons were getting severely pixelated mid-animation.

Fixes: 236759099
Fixes: 244499770
Test: Manual
Change-Id: I56a76cbf286bd30540f3debdcb681d39c890a445
parent 37f83cf2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ public interface QuickstepSystemShortcut {

        @Override
        public void onClick(View view) {
            // Initiate splitscreen from the Home screen or Home All Apps
            Bitmap bitmap;
            Intent intent;
            if (mItemInfo instanceof WorkspaceItemInfo) {
+1 −0
Original line number Diff line number Diff line
@@ -270,6 +270,7 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba

        @Override
        public void onClick(View view) {
            // Initiate splitscreen from the in-app Taskbar or Taskbar All Apps
            Pair<InstanceId, com.android.launcher3.logging.InstanceId> instanceIds =
                    LogUtils.getShellShareableInstanceId();
            mTarget.getStatsLogManager().logger()
+8 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
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_0_75;
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;
@@ -194,6 +195,13 @@ public class QuickstepAtomicAnimationFactory extends
            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;
            config.setInterpolator(ANIM_SCRIM_FADE, clampToProgress(LINEAR,
                    timings.getScrimFadeInStartOffset(),
                    timings.getScrimFadeInEndOffset()));
            config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, OVERSHOOT_0_75);
            config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, OVERSHOOT_0_75);
        }
    }
}
+43 −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;

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

import android.view.animation.Interpolator;

/**
 * Timings for the Normal > OverviewSplitSelect animation.
 */
public class NormalToSplitTimings extends OverviewToSplitTimings implements SplitAnimationTimings {
    @Override
    public Interpolator getStagedRectXInterpolator() { return LINEAR; }
    @Override
    public Interpolator getStagedRectScaleXInterpolator() { return LINEAR; }
    @Override
    public Interpolator getStagedRectScaleYInterpolator() { return LINEAR; }

    public int getScrimFadeInStart() { return 0; }
    public int getScrimFadeInEnd() { return 167; }

    public float getScrimFadeInStartOffset() {
        return (float) getScrimFadeInStart() / getDuration();
    }
    public float getScrimFadeInEndOffset() {
        return (float) getScrimFadeInEnd() / getDuration();
    }
}
+8 −5
Original line number Diff line number Diff line
@@ -24,10 +24,10 @@ import android.view.animation.Interpolator;
 * Timings for the Overview > OverviewSplitSelect animation.
 */
public class OverviewToSplitTimings implements SplitAnimationTimings {
    public int getThumbnailFadeToGrayStart() { return 0; }
    public int getThumbnailFadeToGrayEnd() { return 133; }
    public int getDockedIconFadeInStart() { return 167; }
    public int getDockedIconFadeInEnd() { return 250; }
    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; }
@@ -45,7 +45,10 @@ public class OverviewToSplitTimings implements SplitAnimationTimings {
    public int getInstructionsUnfoldEnd() { return 500; }

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

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