diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index cb1da383d5..872e64a510 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -188,9 +188,6 @@ public class QuickstepAtomicAnimationFactory extends AllAppsSwipeController.applyAllAppsToNormalConfig(mActivity, config); } else if (fromState == NORMAL && toState == ALL_APPS) { AllAppsSwipeController.applyNormalToAllAppsAnimConfig(mActivity, config); - } else if (fromState == OVERVIEW && toState == OVERVIEW_SPLIT_SELECT) { - config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, - clampToProgress(LINEAR, 0, 0.167f)); } } } diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java index cb08ac8b5e..e79d56b631 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java @@ -16,8 +16,6 @@ package com.android.launcher3.uioverrides.states; -import android.content.Context; - import com.android.launcher3.Launcher; import com.android.quickstep.views.RecentsView; @@ -26,8 +24,6 @@ import com.android.quickstep.views.RecentsView; * pinned and user is selecting the second one */ public class SplitScreenSelectState extends OverviewState { - private static final int OVERVIEW_SPLIT_SELECT_SLIDE_IN_DURATION = 500; - public SplitScreenSelectState(int id) { super(id); } @@ -42,9 +38,4 @@ public class SplitScreenSelectState extends OverviewState { RecentsView recentsView = launcher.getOverviewPanel(); return recentsView.getSplitSelectTranslation(); } - - @Override - public int getTransitionDuration(Context context, boolean isToState) { - return OVERVIEW_SPLIT_SELECT_SLIDE_IN_DURATION; - } } diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java index d93f015e7f..7a66ea00e1 100644 --- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java +++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java @@ -2,9 +2,8 @@ package com.android.quickstep.views; import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU; import static com.android.launcher3.anim.Interpolators.ACCEL; -import static com.android.launcher3.anim.Interpolators.FASTER_OUT_SLOWER_IN; +import static com.android.launcher3.anim.Interpolators.DEACCEL_3; import static com.android.launcher3.anim.Interpolators.LINEAR; -import static com.android.launcher3.anim.Interpolators.clampToProgress; import android.animation.ValueAnimator; import android.content.Context; @@ -201,16 +200,10 @@ public class FloatingTaskView extends FrameLayout { RectF floatingTaskViewBounds = new RectF(); if (fadeWithThumbnail) { - // FloatingTaskThumbnailView: thumbnail fades out to transparent - animation.addFloat(mThumbnailView, LauncherAnimUtils.VIEW_ALPHA, - 1, 0, clampToProgress(LINEAR, 0, 0.267f)); - - // SplitPlaceholderView: gray background fades in at the same time, then new icon fades - // in animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ALPHA_FLOAT, - 0, 1, clampToProgress(LINEAR, 0, 0.267f)); - animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ICON_ALPHA, - 0, 1, clampToProgress(LINEAR, 0.333f, 0.5f)); + 0, 1, ACCEL); + animation.addFloat(mThumbnailView, LauncherAnimUtils.VIEW_ALPHA, + 1, 0, DEACCEL_3); } else if (isStagedTask) { // Fade in the placeholder view when split is initiated from homescreen / all apps // icons. @@ -221,15 +214,12 @@ public class FloatingTaskView extends FrameLayout { } MultiValueUpdateListener listener = new MultiValueUpdateListener() { - // SplitPlaceholderView: rectangle translates and stretches to new position - final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, - clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f)); - final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, - clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f)); + final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, LINEAR); + final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, LINEAR); final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0, - animDuration, clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f)); + animDuration, LINEAR); final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0, - animDuration, clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f)); + animDuration, LINEAR); @Override public void onUpdate(float percent, boolean initOnly) { // Calculate the icon position. diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index a153f2676e..64068adcc6 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -35,7 +35,6 @@ import static com.android.launcher3.anim.Interpolators.ACCEL; import static com.android.launcher3.anim.Interpolators.ACCEL_0_75; import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; -import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE; import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.anim.Interpolators.FINAL_FRAME; import static com.android.launcher3.anim.Interpolators.LINEAR; @@ -114,7 +113,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.UiThread; import androidx.core.graphics.ColorUtils; -import androidx.dynamicanimation.animation.SpringForce; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseActivity.MultiWindowModeChangedListener; @@ -127,7 +125,6 @@ import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.PendingAnimation; -import com.android.launcher3.anim.SpringAnimationBuilder; import com.android.launcher3.anim.SpringProperty; import com.android.launcher3.compat.AccessibilityManagerCompat; import com.android.launcher3.config.FeatureFlags; @@ -445,9 +442,6 @@ public abstract class RecentsView= dismissed index and in the same row as the // dismissed index or next focused index. Offset successive task dismissal // durations for a staggered effect. - distanceFromDismissedTask++; - // If user is initiating splitscreen from the focused (large) task, we use a - // spring-based animation and timings. For other, smaller, repositions, we currently - // fall back on a less complicated linear animation and timings. - float animationStartProgress = isFocusedTaskDismissed && nextFocusedTaskView == null - ? Utilities.boundToRange( - INITIAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET - + ADDITIONAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET - * (int) Math.ceil(distanceFromDismissedTask / 2f), 0f, - dismissTranslationInterpolationEnd) - : Utilities.boundToRange( - INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET - + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET - * distanceFromDismissedTask, 0f, - dismissTranslationInterpolationEnd); - + float animationStartProgress = Utilities.boundToRange( + INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET + + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET + * ++distanceFromDismissedTask, 0f, + dismissTranslationInterpolationEnd); if (taskView == nextFocusedTaskView) { // Enlarge the task to be focused next, and translate into focus position. float scale = mTaskWidth / (float) mLastComputedGridTaskSize.width(); @@ -3199,36 +3163,12 @@ public abstract class RecentsView() { + mPendingAnimation.addEndListener(new Consumer() { @Override public void accept(Boolean success) { if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile @@ -3460,9 +3399,7 @@ public abstract class RecentsView CONTAINER_ALPHA = - new FloatProperty("SplitInstructionsContainerAlpha") { + public static final FloatProperty ALPHA_FLOAT = + new FloatProperty("SplitInstructionsAlpha") { @Override public void setValue(SplitInstructionsView splitInstructionsView, float v) { splitInstructionsView.setVisibility(v != 0 ? VISIBLE : GONE); @@ -57,32 +55,6 @@ public class SplitInstructionsView extends FrameLayout { } }; - public static final FloatProperty UNFOLD = - new FloatProperty("SplitInstructionsUnfold") { - @Override - public void setValue(SplitInstructionsView splitInstructionsView, float v) { - splitInstructionsView.setScaleY(v); - } - - @Override - public Float get(SplitInstructionsView splitInstructionsView) { - return splitInstructionsView.getScaleY(); - } - }; - - public static final FloatProperty TEXT_ALPHA = - new FloatProperty("SplitInstructionsTextAlpha") { - @Override - public void setValue(SplitInstructionsView splitInstructionsView, float v) { - splitInstructionsView.mTextView.setAlpha(v); - } - - @Override - public Float get(SplitInstructionsView splitInstructionsView) { - return splitInstructionsView.mTextView.getAlpha(); - } - }; - public SplitInstructionsView(Context context) { this(context, null); } @@ -105,9 +77,6 @@ public class SplitInstructionsView extends FrameLayout { false ); - splitInstructionsView.mTextView = splitInstructionsView.findViewById( - R.id.split_instructions_text); - dragLayer.addView(splitInstructionsView); return splitInstructionsView; } diff --git a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java index ae6aae1e2d..28080d477f 100644 --- a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java +++ b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java @@ -47,19 +47,6 @@ public class SplitPlaceholderView extends FrameLayout { } }; - public static final FloatProperty ICON_ALPHA = - new FloatProperty("SplitViewIconAlpha") { - @Override - public void setValue(SplitPlaceholderView splitPlaceholderView, float v) { - splitPlaceholderView.mIconView.setAlpha(v); - } - - @Override - public Float get(SplitPlaceholderView splitPlaceholderView) { - return splitPlaceholderView.mIconView.getAlpha(); - } - }; - @Nullable private IconView mIconView; diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index d2c298816f..b089155f5b 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -323,19 +323,6 @@ public class TaskView extends FrameLayout implements Reusable { } }; - public static final FloatProperty ICON_ALPHA = - new FloatProperty("iconAlpha") { - @Override - public void setValue(TaskView taskView, float v) { - taskView.mIconView.setAlpha(v); - } - - @Override - public Float get(TaskView taskView) { - return taskView.mIconView.getAlpha(); - } - }; - @Nullable protected Task mTask; protected TaskThumbnailView mSnapshotView; diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java index 464b3eda5b..0a77aa7bcf 100644 --- a/src/com/android/launcher3/anim/Interpolators.java +++ b/src/com/android/launcher3/anim/Interpolators.java @@ -50,8 +50,6 @@ public class Interpolators { public static final Interpolator ACCEL_DEACCEL = new AccelerateDecelerateInterpolator(); public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f); - public static final Interpolator FASTER_OUT_SLOWER_IN = - new PathInterpolator(0.3f, 0f, 0.1f, 1f); public static final Interpolator AGGRESSIVE_EASE = new PathInterpolator(0.2f, 0f, 0f, 1f); public static final Interpolator AGGRESSIVE_EASE_IN_OUT = new PathInterpolator(0.6f,0, 0.4f, 1); diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java index 2a0fe3aea2..9ac1c0e4f9 100644 --- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java +++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java @@ -440,7 +440,7 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { out.setPivotX(0); - out.setPivotY(splitInstructionsHeight); + out.setPivotY(0); out.setRotation(getDegreesRotated()); int distanceToEdge = out.getResources().getDimensionPixelSize( R.dimen.split_instructions_bottom_margin_phone_landscape); @@ -448,8 +448,8 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { int insetCorrectionX = dp.getInsets().left; // Center the view in case of unbalanced insets on top or bottom of screen int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2; - out.setTranslationX(distanceToEdge - insetCorrectionX); - out.setTranslationY(((-splitInstructionsHeight - splitInstructionsWidth) / 2f) + out.setTranslationX(splitInstructionsHeight + distanceToEdge - insetCorrectionX); + out.setTranslationY(((splitInstructionsHeight - splitInstructionsWidth) / 2f) + insetCorrectionY); FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams(); // Setting gravity to LEFT instead of the lint-recommended START because we always want this diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java index f89c0e52b0..dd9f64266e 100644 --- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java +++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java @@ -500,7 +500,7 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { out.setPivotX(0); - out.setPivotY(splitInstructionsHeight); + out.setPivotY(0); out.setRotation(getDegreesRotated()); int distanceToEdge; if ((DisplayController.getNavigationMode(out.getContext()) == THREE_BUTTONS) diff --git a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java index 55bb5e85e5..387e980320 100644 --- a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java +++ b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java @@ -190,7 +190,7 @@ public class SeascapePagedViewHandler extends LandscapePagedViewHandler { public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { out.setPivotX(0); - out.setPivotY(splitInstructionsHeight); + out.setPivotY(0); out.setRotation(getDegreesRotated()); int distanceToEdge = out.getResources().getDimensionPixelSize( R.dimen.split_instructions_bottom_margin_phone_landscape); @@ -198,8 +198,9 @@ public class SeascapePagedViewHandler extends LandscapePagedViewHandler { int insetCorrectionX = dp.getInsets().right; // Center the view in case of unbalanced insets on top or bottom of screen int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2; - out.setTranslationX(splitInstructionsWidth - distanceToEdge + insetCorrectionX); - out.setTranslationY(((-splitInstructionsHeight + splitInstructionsWidth) / 2f) + out.setTranslationX(splitInstructionsWidth - splitInstructionsHeight - distanceToEdge + + insetCorrectionX); + out.setTranslationY(((splitInstructionsHeight + splitInstructionsWidth) / 2f) + insetCorrectionY); FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams(); // Setting gravity to RIGHT instead of the lint-recommended END because we always want this