diff --git a/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowSwipeHandler.java b/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowSwipeHandler.java index 34b3d746d0..4f9d8371dc 100644 --- a/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowSwipeHandler.java @@ -27,7 +27,6 @@ import static com.android.launcher3.GestureNavContract.EXTRA_ON_FINISH_CALLBACK; import static com.android.launcher3.GestureNavContract.EXTRA_REMOTE_CALLBACK; import static com.android.launcher3.anim.AnimatorListeners.forEndCallback; -import android.animation.ObjectAnimator; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.Intent; @@ -62,16 +61,15 @@ import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.util.DisplayController; import com.android.quickstep.AbsSwipeUpHandler; import com.android.quickstep.GestureState; +import com.android.quickstep.RecentsAnimationController; import com.android.quickstep.RecentsAnimationDeviceState; -import com.android.quickstep.RemoteAnimationTargets; +import com.android.quickstep.RecentsAnimationTargets; import com.android.quickstep.TaskAnimationManager; import com.android.quickstep.fallback.FallbackRecentsView; import com.android.quickstep.fallback.RecentsState; -import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.TransformParams; -import com.android.quickstep.util.TransformParams.BuilderProxy; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.system.InputConsumerController; @@ -115,12 +113,25 @@ public class RecentsWindowSwipeHandler extends AbsSwipeUpHandler - remoteTargetHandle.getTransformParams().setHomeBuilderProxy( - RecentsWindowSwipeHandler. - this::updateHomeActivityTransformDuringSwipeUp)); + + initTransformParams(); + } + + @Override + public void onRecentsAnimationStart(RecentsAnimationController controller, + RecentsAnimationTargets targets) { + super.onRecentsAnimationStart(controller, targets); + initTransformParams(); + } + + private void initTransformParams() { + if (mActiveAnimationFactory != null) { + mActiveAnimationFactory.initTransformParams(); + return; } + runActionOnRemoteHandles(remoteTargetHandle -> + remoteTargetHandle.getTransformParams().setHomeBuilderProxy( + RecentsWindowSwipeHandler.this::updateHomeActivityTransformDuringSwipeUp)); } @Override @@ -135,12 +146,17 @@ public class RecentsWindowSwipeHandler extends AbsSwipeUpHandler { private final Rect mTempRect = new Rect(); - private final TransformParams mHomeAlphaParams = new TransformParams(); - private final AnimatedFloat mHomeAlpha; - private final AnimatedFloat mVerticalShiftForScale = new AnimatedFloat(); - private final AnimatedFloat mRecentsAlpha = new AnimatedFloat(); + private final TransformParams mTransformParams = new TransformParams(); + private final AnimatedFloat mHomeAlpha = new AnimatedFloat(this::updateAppTransforms); + private final AnimatedFloat mVerticalShiftForScale = + new AnimatedFloat(this::updateAppTransforms); + private final AnimatedFloat mRecentsAlpha = new AnimatedFloat(this:: updateAppTransforms); private final RectF mTargetRect = new RectF(); private SurfaceControl mSurfaceControl; @@ -255,25 +260,12 @@ public class RecentsWindowSwipeHandler extends AbsSwipeUpHandler - remoteTargetHandle.getTransformParams().setHomeBuilderProxy( - FallbackHomeAnimationFactory.this - ::updateHomeActivityTransformDuringHomeAnim)); - } else { - mHomeAlpha = new AnimatedFloat(this::updateHomeAlpha); - mHomeAlpha.value = 0; - mHomeAlphaParams.setHomeBuilderProxy( - this::updateHomeActivityTransformDuringHomeAnim); } - mRecentsAlpha.value = 1; - runActionOnRemoteHandles(remoteTargetHandle -> - remoteTargetHandle.getTransformParams().setBaseBuilderProxy( - FallbackHomeAnimationFactory.this - ::updateRecentsActivityTransformDuringHomeAnim)); + mHomeAlpha.value = 0; + + initTransformParams(); } @NonNull @@ -285,63 +277,30 @@ public class RecentsWindowSwipeHandler extends AbsSwipeUpHandler + remoteTargetHandle.getTransformParams().setHomeBuilderProxy( + FallbackHomeAnimationFactory.this + ::updateHomeActivityTransformDuringHomeAnim)); + + mTransformParams.setTargetSet(mRecentsAnimationTargets); + } + + private void updateRecentsActivityTransformDuringHomeAnim(SurfaceProperties builder, + RemoteAnimationTarget app, TransformParams params) { + if (app.mode != mRecentsAnimationTargets.targetMode) { + return; + } + builder.setAlpha(mRecentsAlpha.value); + } + + private void updateAppTransforms() { + mTransformParams.applySurfaceParams( + mTransformParams.createSurfaceParams(FallbackHomeAnimationFactory.this + ::updateRecentsActivityTransformDuringHomeAnim)); + } + + private void updateHomeActivityTransformDuringHomeAnim(SurfaceProperties builder, + RemoteAnimationTarget app, TransformParams params) { + setHomeScaleAndAlpha(builder, app, mVerticalShiftForScale.value, mHomeAlpha.value); + } + private void onRectAnimationEnd() { mAnimationFinished = true; maybeSendEndMessage(); diff --git a/quickstep/src/com/android/quickstep/util/TransformParams.java b/quickstep/src/com/android/quickstep/util/TransformParams.java index ebcef30b91..401eccc3bd 100644 --- a/quickstep/src/com/android/quickstep/util/TransformParams.java +++ b/quickstep/src/com/android/quickstep/util/TransformParams.java @@ -143,18 +143,15 @@ public class TransformParams { for (int i = 0; i < targets.unfilteredApps.length; i++) { RemoteAnimationTarget app = targets.unfilteredApps[i]; SurfaceProperties builder = transaction.forSurface(app.leash); + BuilderProxy targetProxy = + app.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME + ? mHomeBuilderProxy + : (app.mode == targets.targetMode ? proxy : mBaseBuilderProxy); if (app.mode == targets.targetMode) { - int activityType = app.windowConfiguration.getActivityType(); - if (activityType == ACTIVITY_TYPE_HOME) { - mHomeBuilderProxy.onBuildTargetParams(builder, app, this); - } else { - builder.setAlpha(getTargetAlpha()); - proxy.onBuildTargetParams(builder, app, this); - } - } else { - mBaseBuilderProxy.onBuildTargetParams(builder, app, this); + builder.setAlpha(getTargetAlpha()); } + targetProxy.onBuildTargetParams(builder, app, this); } // always put wallpaper layer to bottom.