diff --git a/quickstep/recents_ui_overrides/res/layout/fallback_recents_activity.xml b/quickstep/recents_ui_overrides/res/layout/fallback_recents_activity.xml index ffe906c179..7b3e37835f 100644 --- a/quickstep/recents_ui_overrides/res/layout/fallback_recents_activity.xml +++ b/quickstep/recents_ui_overrides/res/layout/fallback_recents_activity.xml @@ -18,6 +18,7 @@ android:id="@+id/drag_layer" android:layout_width="match_parent" android:layout_height="match_parent" + android:clipChildren="false" android:fitsSystemWindows="true"> { +public class QuickstepAtomicAnimationFactory extends + RecentsAtomicAnimationFactory { // Scale recents takes before animating in private static final float RECENTS_PREPARE_SCALE = 1.33f; - public static final int INDEX_SHELF_ANIM = 0; - public static final int INDEX_RECENTS_FADE_ANIM = 1; - public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = 2; - public static final int INDEX_PAUSE_TO_OVERVIEW_ANIM = 3; - private static final int ANIM_COUNT = 4; + public static final int INDEX_SHELF_ANIM = RecentsAtomicAnimationFactory.NEXT_INDEX + 0; + public static final int INDEX_PAUSE_TO_OVERVIEW_ANIM = + RecentsAtomicAnimationFactory.NEXT_INDEX + 1; + + private static final int MY_ANIM_COUNT = 2; + protected static final int NEXT_INDEX = RecentsAtomicAnimationFactory.NEXT_INDEX + + MY_ANIM_COUNT; public static final long ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW = 300; - private final QuickstepLauncher mLauncher; - - public QuickstepAtomicAnimationFactory(QuickstepLauncher launcher) { - super(ANIM_COUNT); - mLauncher = launcher; + public QuickstepAtomicAnimationFactory(QuickstepLauncher activity) { + super(activity, MY_ANIM_COUNT); } @Override public Animator createStateElementAnimation(int index, float... values) { switch (index) { case INDEX_SHELF_ANIM: { - AllAppsTransitionController aatc = mLauncher.getAllAppsController(); + AllAppsTransitionController aatc = mActivity.getAllAppsController(); Animator springAnim = aatc.createSpringAnimation(values); - if ((OVERVIEW.getVisibleElements(mLauncher) & HOTSEAT_ICONS) != 0) { + if ((OVERVIEW.getVisibleElements(mActivity) & HOTSEAT_ICONS) != 0) { // Translate hotseat with the shelf until reaching overview. - float overviewProgress = OVERVIEW.getVerticalProgress(mLauncher); - ScaleAndTranslation sat = OVERVIEW.getHotseatScaleAndTranslation(mLauncher); + float overviewProgress = OVERVIEW.getVerticalProgress(mActivity); + ScaleAndTranslation sat = OVERVIEW.getHotseatScaleAndTranslation(mActivity); float shiftRange = aatc.getShiftRange(); if (values.length == 1) { values = new float[] {aatc.getProgress(), values[0]}; @@ -114,9 +112,9 @@ public class QuickstepAtomicAnimationFactory extends AtomicAnimationFactory { float progress = (Float) anim.getAnimatedValue(); - if (progress >= overviewProgress || mLauncher.isInState(BACKGROUND_APP)) { + if (progress >= overviewProgress || mActivity.isInState(BACKGROUND_APP)) { float hotseatShift = (progress - overviewProgress) * shiftRange; - mLauncher.getHotseat().setTranslationY(hotseatShift + sat.translationY); + mActivity.getHotseat().setTranslationY(hotseatShift + sat.translationY); } }); hotseatAnim.setInterpolator(LINEAR); @@ -130,34 +128,21 @@ public class QuickstepAtomicAnimationFactory extends AtomicAnimationFactory stateManager = mLauncher.getStateManager(); + StateManager stateManager = mActivity.getStateManager(); return stateManager.createAtomicAnimation( stateManager.getCurrentStableState(), OVERVIEW, config); } - default: return super.createStateElementAnimation(index, values); } @@ -172,7 +157,7 @@ public class QuickstepAtomicAnimationFactory extends AtomicAnimationFactory 0; if (!isHotseatVisible) { hotseat.setScaleX(0.92f); hotseat.setScaleY(0.92f); if (ENABLE_OVERVIEW_ACTIONS.get()) { - AllAppsContainerView qsbContainer = mLauncher.getAppsView(); + AllAppsContainerView qsbContainer = mActivity.getAppsView(); View qsb = qsbContainer.getSearchView(); boolean qsbVisible = qsb.getVisibility() == VISIBLE && qsb.getAlpha() > 0; if (!qsbVisible) { @@ -209,7 +194,7 @@ public class QuickstepAtomicAnimationFactory extends AtomicAnimationFactory> extend controller.dispatchOnStart(); controller.getAnimationPlayer().end(); }); - factory.onRemoteAnimationReceived(null); factory.createActivityInterface(RECENTS_LAUNCH_DURATION); factory.setRecentsAttachedToAppWindow(true, false); mActivity = activity; diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java index 66fefbe5ef..d9574184f7 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java @@ -55,7 +55,6 @@ import com.android.launcher3.views.FloatingIconView; import com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener; import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.ActivityInitListener; -import com.android.quickstep.util.AppWindowAnimationHelper; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; @@ -511,8 +510,8 @@ public abstract class BaseSwipeUpHandler, Q extend public interface Factory { - BaseSwipeUpHandler newHandler(GestureState gestureState, long touchTimeMs, - boolean continuingLastGesture, boolean isLikelyToStartNewTask); + BaseSwipeUpHandler newHandler( + GestureState gestureState, long touchTimeMs, boolean continuingLastGesture); } protected interface RunningWindowAnim { diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherSwipeHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java similarity index 92% rename from quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherSwipeHandler.java rename to quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java index a8fa630b7b..343f28ac3d 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherSwipeHandler.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java @@ -17,7 +17,6 @@ package com.android.quickstep; import static com.android.launcher3.BaseActivity.INVISIBLE_BY_STATE_HANDLER; import static com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS; -import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.anim.Interpolators.DEACCEL; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2; @@ -38,29 +37,24 @@ import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.PEEK; import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; import android.animation.Animator; -import android.animation.AnimatorSet; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.graphics.PointF; -import android.graphics.RectF; import android.os.Build; import android.os.SystemClock; -import android.os.UserHandle; import android.view.View; import android.view.View.OnApplyWindowInsetsListener; import android.view.ViewTreeObserver.OnDrawListener; import android.view.WindowInsets; import android.view.animation.Interpolator; -import androidx.annotation.NonNull; import androidx.annotation.UiThread; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.DeviceProfile; -import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimationSuccessListener; @@ -72,7 +66,6 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.util.TraceHelper; -import com.android.launcher3.views.FloatingIconView; import com.android.quickstep.BaseActivityInterface.AnimationFactory; import com.android.quickstep.GestureState.GestureEndTarget; import com.android.quickstep.inputconsumers.OverviewInputConsumer; @@ -80,7 +73,6 @@ import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.ShelfPeekAnim; import com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState; -import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.TransformParams.TargetAlphaProvider; import com.android.quickstep.views.LiveTileOverlay; import com.android.quickstep.views.RecentsView; @@ -92,11 +84,12 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; /** * Handles the navigation gestures when Launcher is the default home activity. + * TODO: Merge this with BaseSwipeUpHandler */ @TargetApi(Build.VERSION_CODES.O) -public class LauncherSwipeHandler extends BaseSwipeUpHandler - implements OnApplyWindowInsetsListener { - private static final String TAG = LauncherSwipeHandler.class.getSimpleName(); +public abstract class BaseSwipeUpHandlerV2, Q extends RecentsView> + extends BaseSwipeUpHandler implements OnApplyWindowInsetsListener { + private static final String TAG = BaseSwipeUpHandlerV2.class.getSimpleName(); private static final String[] STATE_NAMES = DEBUG_STATES ? new String[16] : null; @@ -108,9 +101,11 @@ public class LauncherSwipeHandler extends BaseSwipeUpHandler