Loading quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +66 −58 Original line number Diff line number Diff line Loading @@ -122,8 +122,6 @@ import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransaction; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.WorkspaceRevealAnim; import com.android.quickstep.views.FloatingWidgetView; Loading @@ -136,6 +134,7 @@ import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import com.android.wm.shell.startingsurface.IStartingWindowListener; import java.util.ArrayList; Loading Loading @@ -814,11 +813,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return; } SurfaceTransaction transaction = new SurfaceTransaction(); ArrayList<SurfaceParams> params = new ArrayList<>(); for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.mode == MODE_OPENING) { matrix.setScale(scale, scale); Loading @@ -839,11 +837,11 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener floatingView.update(mIconAlpha.value, 255, floatingIconBounds, percent, 0f, mWindowRadius.value * scale, true /* isOpening */); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f - mIconAlpha.value) .setCornerRadius(mWindowRadius.value) .setShadowRadius(mShadowRadius.value); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f - mIconAlpha.value) .withCornerRadius(mWindowRadius.value) .withShadowRadius(mShadowRadius.value); } else if (target.mode == MODE_CLOSING) { if (target.localBounds != null) { final Rect localBounds = target.localBounds; Loading @@ -863,26 +861,29 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener tmpPos.y = tmp; } matrix.setTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f); } params.add(builder.build()); } if (navBarTarget != null) { SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { matrix.setScale(scale, scale); matrix.postTranslate(windowTransX0, windowTransY0); navBuilder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } params.add(navBuilder.build()); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()])); } }; appAnimator.addUpdateListener(listener); Loading Loading @@ -998,33 +999,37 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener matrix.postScale(mAppWindowScale, mAppWindowScale, widgetBackgroundBounds.left, widgetBackgroundBounds.top); SurfaceTransaction transaction = new SurfaceTransaction(); ArrayList<SurfaceParams> params = new ArrayList<>(); float floatingViewAlpha = appTargetsAreTranslucent ? 1 - mPreviewAlpha.value : 1; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.mode == MODE_OPENING) { floatingView.update(widgetBackgroundBounds, floatingViewAlpha, mWidgetForegroundAlpha.value, mWidgetFallbackBackgroundAlpha.value, mCornerRadiusProgress.value); builder.setMatrix(matrix) .setWindowCrop(appWindowCrop) .setAlpha(mPreviewAlpha.value) .setCornerRadius(mWindowRadius.value / mAppWindowScale); builder.withMatrix(matrix) .withWindowCrop(appWindowCrop) .withAlpha(mPreviewAlpha.value) .withCornerRadius(mWindowRadius.value / mAppWindowScale); } params.add(builder.build()); } if (navBarTarget != null) { SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { navBuilder.setMatrix(matrix) .setWindowCrop(appWindowCrop) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(matrix) .withWindowCrop(appWindowCrop) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } params.add(navBuilder.build()); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()])); } }); Loading Loading @@ -1219,15 +1224,16 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener unlockAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[appTargets.length]; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; transaction.forSurface(target.leash) .setAlpha(1f) .setWindowCrop(target.screenSpaceBounds) .setCornerRadius(cornerRadius); params[i] = new SurfaceParams.Builder(target.leash) .withAlpha(1f) .withWindowCrop(target.screenSpaceBounds) .withCornerRadius(cornerRadius) .build(); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params); } }); return unlockAnimator; Loading Loading @@ -1445,10 +1451,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener @Override public void onUpdate(float percent, boolean initOnly) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[appTargets.length]; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.localBounds != null) { tmpPos.set(target.localBounds.left, target.localBounds.top); Loading @@ -1470,19 +1476,20 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener tmpRect.centerY()); matrix.postTranslate(0, mDy.value); matrix.postTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(mAlpha.value) .setCornerRadius(windowCornerRadius) .setShadowRadius(mShadowRadius.value); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(mAlpha.value) .withCornerRadius(windowCornerRadius) .withShadowRadius(mShadowRadius.value); } else if (target.mode == MODE_OPENING) { matrix.setTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f); } params[i] = builder.build(); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params); } }); Loading Loading @@ -1852,10 +1859,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener @Override public void onUpdate(RectF currentRectF, float progress) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[mAppTargets.length]; for (int i = mAppTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = mAppTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.localBounds != null) { mTmpPos.set(target.localBounds.left, target.localBounds.top); Loading Loading @@ -1890,17 +1897,18 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener mMatrix.setScale(scale, scale); mMatrix.postTranslate(mCurrentRect.left, mCurrentRect.top); builder.setMatrix(mMatrix) .setWindowCrop(mTmpRect) .setAlpha(getWindowAlpha(progress)) .setCornerRadius(getCornerRadius(progress) / scale); builder.withMatrix(mMatrix) .withWindowCrop(mTmpRect) .withAlpha(getWindowAlpha(progress)) .withCornerRadius(getCornerRadius(progress) / scale); } else if (target.mode == MODE_OPENING) { mMatrix.setTranslate(mTmpPos.x, mTmpPos.y); builder.setMatrix(mMatrix) .setAlpha(1f); builder.withMatrix(mMatrix) .withAlpha(1f); } params[i] = builder.build(); } mSurfaceApplier.scheduleApply(transaction); mSurfaceApplier.scheduleApply(params); } protected float getWindowAlpha(float progress) { Loading quickstep/src/com/android/quickstep/FallbackSwipeHandler.java +7 −7 Original line number Diff line number Diff line Loading @@ -65,12 +65,12 @@ import com.android.launcher3.util.DisplayController; import com.android.quickstep.fallback.FallbackRecentsView; import com.android.quickstep.fallback.RecentsState; 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.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import java.lang.ref.WeakReference; import java.util.ArrayList; Loading Loading @@ -125,18 +125,18 @@ public class FallbackSwipeHandler extends } } private void updateHomeActivityTransformDuringSwipeUp(SurfaceProperties builder, private void updateHomeActivityTransformDuringSwipeUp(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { setHomeScaleAndAlpha(builder, app, mCurrentShift.value, Utilities.boundToRange(1 - mCurrentShift.value, 0, 1)); } private void setHomeScaleAndAlpha(SurfaceProperties builder, private void setHomeScaleAndAlpha(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, float verticalShift, float alpha) { float scale = Utilities.mapRange(verticalShift, 1, mMaxLauncherScale); mTmpMatrix.setScale(scale, scale, app.localBounds.exactCenterX(), app.localBounds.exactCenterY()); builder.setMatrix(mTmpMatrix).setAlpha(alpha); builder.withMatrix(mTmpMatrix).withAlpha(alpha); } @Override Loading Loading @@ -279,12 +279,12 @@ public class FallbackSwipeHandler extends return mTargetRect; } private void updateRecentsActivityTransformDuringHomeAnim(SurfaceProperties builder, private void updateRecentsActivityTransformDuringHomeAnim(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.setAlpha(mRecentsAlpha.value); builder.withAlpha(mRecentsAlpha.value); } private void updateHomeActivityTransformDuringHomeAnim(SurfaceProperties builder, private void updateHomeActivityTransformDuringHomeAnim(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { setHomeScaleAndAlpha(builder, app, mVerticalShiftForScale.value, mHomeAlpha.value); } Loading quickstep/src/com/android/quickstep/LauncherBackAnimationController.java +9 −5 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.launcher3.uioverrides.QuickstepLauncher; import com.android.quickstep.util.RectFSpringAnim; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat; /** * Controls the animation of swiping back and returning to launcher. Loading Loading @@ -241,17 +242,20 @@ public class LauncherBackAnimationController { /** Transform the target window to match the target rect. */ private void applyTransform(RectF targetRect, float cornerRadius) { SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder builder = new SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder(mBackTarget.leash); final float scale = targetRect.width() / mStartRect.width(); mTransformMatrix.reset(); mTransformMatrix.setScale(scale, scale); mTransformMatrix.postTranslate(targetRect.left, targetRect.top); builder.withMatrix(mTransformMatrix) .withWindowCrop(mStartRect) .withCornerRadius(cornerRadius); SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = builder.build(); if (mBackTarget.leash.isValid()) { mTransaction.setMatrix(mBackTarget.leash, mTransformMatrix, new float[9]); mTransaction.setWindowCrop(mBackTarget.leash, mStartRect); mTransaction.setCornerRadius(mBackTarget.leash, cornerRadius); if (surfaceParams.surface.isValid()) { surfaceParams.applyTo(mTransaction); } mTransaction.apply(); } Loading quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java +6 −6 Original line number Diff line number Diff line Loading @@ -37,11 +37,11 @@ import com.android.launcher3.touch.PagedOrientationHandler; import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; import com.android.quickstep.util.TransformParams.BuilderProxy; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder; import java.util.Arrays; import java.util.function.Consumer; Loading Loading @@ -335,11 +335,11 @@ public abstract class SwipeUpAnimationLogic implements } @Override public void onBuildTargetParams(SurfaceProperties builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.setMatrix(mMatrix) .setWindowCrop(mCropRect) .setCornerRadius(params.getCornerRadius()); public void onBuildTargetParams( Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.withMatrix(mMatrix) .withWindowCrop(mCropRect) .withCornerRadius(params.getCornerRadius()); } @Override Loading quickstep/src/com/android/quickstep/TaskViewUtils.java +9 −13 Original line number Diff line number Diff line Loading @@ -72,8 +72,6 @@ import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.util.DisplayController; import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle; import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.SurfaceTransaction; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; Loading @@ -84,6 +82,7 @@ import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import java.util.ArrayList; import java.util.List; Loading Loading @@ -253,24 +252,21 @@ public final class TaskViewUtils { @Override public void onUpdate(float percent, boolean initOnly) { final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); // TODO Do we need to operate over multiple TVSs for the navbar leash? for (RemoteTargetHandle handle : remoteTargetHandles) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { TaskViewSimulator taskViewSimulator = handle.getTaskViewSimulator(); taskViewSimulator.getCurrentCropRect().round(cropRect); navBuilder.setMatrix(taskViewSimulator.getCurrentMatrix()) .setWindowCrop(cropRect) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(taskViewSimulator.getCurrentMatrix()) .withWindowCrop(cropRect) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } handle.getTransformParams().applySurfaceParams(transaction); handle.getTransformParams().applySurfaceParams(navBuilder.build()); } } }); Loading Loading @@ -478,7 +474,7 @@ public final class TaskViewUtils { * If {@param launchingTaskView} is not null, then this will play the tasks launch animation * from the position of the GroupedTaskView (when user taps on the TaskView to start it). * Technically this case should be taken care of by * {@link #composeRecentsSplitLaunchAnimatorLegacy} below, but the way we launch tasks whether * {@link #composeRecentsSplitLaunchAnimatorLegacy()} below, but the way we launch tasks whether * it's a single task or multiple tasks results in different entry-points. * * If it is null, then it will simply fade in the starting apps and fade out launcher (for the Loading Loading
quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +66 −58 Original line number Diff line number Diff line Loading @@ -122,8 +122,6 @@ import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransaction; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.WorkspaceRevealAnim; import com.android.quickstep.views.FloatingWidgetView; Loading @@ -136,6 +134,7 @@ import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import com.android.wm.shell.startingsurface.IStartingWindowListener; import java.util.ArrayList; Loading Loading @@ -814,11 +813,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return; } SurfaceTransaction transaction = new SurfaceTransaction(); ArrayList<SurfaceParams> params = new ArrayList<>(); for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.mode == MODE_OPENING) { matrix.setScale(scale, scale); Loading @@ -839,11 +837,11 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener floatingView.update(mIconAlpha.value, 255, floatingIconBounds, percent, 0f, mWindowRadius.value * scale, true /* isOpening */); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f - mIconAlpha.value) .setCornerRadius(mWindowRadius.value) .setShadowRadius(mShadowRadius.value); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f - mIconAlpha.value) .withCornerRadius(mWindowRadius.value) .withShadowRadius(mShadowRadius.value); } else if (target.mode == MODE_CLOSING) { if (target.localBounds != null) { final Rect localBounds = target.localBounds; Loading @@ -863,26 +861,29 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener tmpPos.y = tmp; } matrix.setTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f); } params.add(builder.build()); } if (navBarTarget != null) { SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { matrix.setScale(scale, scale); matrix.postTranslate(windowTransX0, windowTransY0); navBuilder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } params.add(navBuilder.build()); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()])); } }; appAnimator.addUpdateListener(listener); Loading Loading @@ -998,33 +999,37 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener matrix.postScale(mAppWindowScale, mAppWindowScale, widgetBackgroundBounds.left, widgetBackgroundBounds.top); SurfaceTransaction transaction = new SurfaceTransaction(); ArrayList<SurfaceParams> params = new ArrayList<>(); float floatingViewAlpha = appTargetsAreTranslucent ? 1 - mPreviewAlpha.value : 1; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.mode == MODE_OPENING) { floatingView.update(widgetBackgroundBounds, floatingViewAlpha, mWidgetForegroundAlpha.value, mWidgetFallbackBackgroundAlpha.value, mCornerRadiusProgress.value); builder.setMatrix(matrix) .setWindowCrop(appWindowCrop) .setAlpha(mPreviewAlpha.value) .setCornerRadius(mWindowRadius.value / mAppWindowScale); builder.withMatrix(matrix) .withWindowCrop(appWindowCrop) .withAlpha(mPreviewAlpha.value) .withCornerRadius(mWindowRadius.value / mAppWindowScale); } params.add(builder.build()); } if (navBarTarget != null) { SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { navBuilder.setMatrix(matrix) .setWindowCrop(appWindowCrop) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(matrix) .withWindowCrop(appWindowCrop) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } params.add(navBuilder.build()); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()])); } }); Loading Loading @@ -1219,15 +1224,16 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener unlockAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[appTargets.length]; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; transaction.forSurface(target.leash) .setAlpha(1f) .setWindowCrop(target.screenSpaceBounds) .setCornerRadius(cornerRadius); params[i] = new SurfaceParams.Builder(target.leash) .withAlpha(1f) .withWindowCrop(target.screenSpaceBounds) .withCornerRadius(cornerRadius) .build(); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params); } }); return unlockAnimator; Loading Loading @@ -1445,10 +1451,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener @Override public void onUpdate(float percent, boolean initOnly) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[appTargets.length]; for (int i = appTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = appTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.localBounds != null) { tmpPos.set(target.localBounds.left, target.localBounds.top); Loading @@ -1470,19 +1476,20 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener tmpRect.centerY()); matrix.postTranslate(0, mDy.value); matrix.postTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(mAlpha.value) .setCornerRadius(windowCornerRadius) .setShadowRadius(mShadowRadius.value); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(mAlpha.value) .withCornerRadius(windowCornerRadius) .withShadowRadius(mShadowRadius.value); } else if (target.mode == MODE_OPENING) { matrix.setTranslate(tmpPos.x, tmpPos.y); builder.setMatrix(matrix) .setWindowCrop(crop) .setAlpha(1f); builder.withMatrix(matrix) .withWindowCrop(crop) .withAlpha(1f); } params[i] = builder.build(); } surfaceApplier.scheduleApply(transaction); surfaceApplier.scheduleApply(params); } }); Loading Loading @@ -1852,10 +1859,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener @Override public void onUpdate(RectF currentRectF, float progress) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceParams[] params = new SurfaceParams[mAppTargets.length]; for (int i = mAppTargets.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = mAppTargets[i]; SurfaceProperties builder = transaction.forSurface(target.leash); SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash); if (target.localBounds != null) { mTmpPos.set(target.localBounds.left, target.localBounds.top); Loading Loading @@ -1890,17 +1897,18 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener mMatrix.setScale(scale, scale); mMatrix.postTranslate(mCurrentRect.left, mCurrentRect.top); builder.setMatrix(mMatrix) .setWindowCrop(mTmpRect) .setAlpha(getWindowAlpha(progress)) .setCornerRadius(getCornerRadius(progress) / scale); builder.withMatrix(mMatrix) .withWindowCrop(mTmpRect) .withAlpha(getWindowAlpha(progress)) .withCornerRadius(getCornerRadius(progress) / scale); } else if (target.mode == MODE_OPENING) { mMatrix.setTranslate(mTmpPos.x, mTmpPos.y); builder.setMatrix(mMatrix) .setAlpha(1f); builder.withMatrix(mMatrix) .withAlpha(1f); } params[i] = builder.build(); } mSurfaceApplier.scheduleApply(transaction); mSurfaceApplier.scheduleApply(params); } protected float getWindowAlpha(float progress) { Loading
quickstep/src/com/android/quickstep/FallbackSwipeHandler.java +7 −7 Original line number Diff line number Diff line Loading @@ -65,12 +65,12 @@ import com.android.launcher3.util.DisplayController; import com.android.quickstep.fallback.FallbackRecentsView; import com.android.quickstep.fallback.RecentsState; 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.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import java.lang.ref.WeakReference; import java.util.ArrayList; Loading Loading @@ -125,18 +125,18 @@ public class FallbackSwipeHandler extends } } private void updateHomeActivityTransformDuringSwipeUp(SurfaceProperties builder, private void updateHomeActivityTransformDuringSwipeUp(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { setHomeScaleAndAlpha(builder, app, mCurrentShift.value, Utilities.boundToRange(1 - mCurrentShift.value, 0, 1)); } private void setHomeScaleAndAlpha(SurfaceProperties builder, private void setHomeScaleAndAlpha(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, float verticalShift, float alpha) { float scale = Utilities.mapRange(verticalShift, 1, mMaxLauncherScale); mTmpMatrix.setScale(scale, scale, app.localBounds.exactCenterX(), app.localBounds.exactCenterY()); builder.setMatrix(mTmpMatrix).setAlpha(alpha); builder.withMatrix(mTmpMatrix).withAlpha(alpha); } @Override Loading Loading @@ -279,12 +279,12 @@ public class FallbackSwipeHandler extends return mTargetRect; } private void updateRecentsActivityTransformDuringHomeAnim(SurfaceProperties builder, private void updateRecentsActivityTransformDuringHomeAnim(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.setAlpha(mRecentsAlpha.value); builder.withAlpha(mRecentsAlpha.value); } private void updateHomeActivityTransformDuringHomeAnim(SurfaceProperties builder, private void updateHomeActivityTransformDuringHomeAnim(SurfaceParams.Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { setHomeScaleAndAlpha(builder, app, mVerticalShiftForScale.value, mHomeAlpha.value); } Loading
quickstep/src/com/android/quickstep/LauncherBackAnimationController.java +9 −5 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.launcher3.uioverrides.QuickstepLauncher; import com.android.quickstep.util.RectFSpringAnim; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat; /** * Controls the animation of swiping back and returning to launcher. Loading Loading @@ -241,17 +242,20 @@ public class LauncherBackAnimationController { /** Transform the target window to match the target rect. */ private void applyTransform(RectF targetRect, float cornerRadius) { SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder builder = new SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder(mBackTarget.leash); final float scale = targetRect.width() / mStartRect.width(); mTransformMatrix.reset(); mTransformMatrix.setScale(scale, scale); mTransformMatrix.postTranslate(targetRect.left, targetRect.top); builder.withMatrix(mTransformMatrix) .withWindowCrop(mStartRect) .withCornerRadius(cornerRadius); SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = builder.build(); if (mBackTarget.leash.isValid()) { mTransaction.setMatrix(mBackTarget.leash, mTransformMatrix, new float[9]); mTransaction.setWindowCrop(mBackTarget.leash, mStartRect); mTransaction.setCornerRadius(mBackTarget.leash, cornerRadius); if (surfaceParams.surface.isValid()) { surfaceParams.applyTo(mTransaction); } mTransaction.apply(); } Loading
quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java +6 −6 Original line number Diff line number Diff line Loading @@ -37,11 +37,11 @@ import com.android.launcher3.touch.PagedOrientationHandler; import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.RectFSpringAnim; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; import com.android.quickstep.util.TransformParams.BuilderProxy; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder; import java.util.Arrays; import java.util.function.Consumer; Loading Loading @@ -335,11 +335,11 @@ public abstract class SwipeUpAnimationLogic implements } @Override public void onBuildTargetParams(SurfaceProperties builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.setMatrix(mMatrix) .setWindowCrop(mCropRect) .setCornerRadius(params.getCornerRadius()); public void onBuildTargetParams( Builder builder, RemoteAnimationTargetCompat app, TransformParams params) { builder.withMatrix(mMatrix) .withWindowCrop(mCropRect) .withCornerRadius(params.getCornerRadius()); } @Override Loading
quickstep/src/com/android/quickstep/TaskViewUtils.java +9 −13 Original line number Diff line number Diff line Loading @@ -72,8 +72,6 @@ import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.util.DisplayController; import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle; import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.SurfaceTransaction; import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; Loading @@ -84,6 +82,7 @@ import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import java.util.ArrayList; import java.util.List; Loading Loading @@ -253,24 +252,21 @@ public final class TaskViewUtils { @Override public void onUpdate(float percent, boolean initOnly) { final SurfaceParams.Builder navBuilder = new SurfaceParams.Builder(navBarTarget.leash); // TODO Do we need to operate over multiple TVSs for the navbar leash? for (RemoteTargetHandle handle : remoteTargetHandles) { SurfaceTransaction transaction = new SurfaceTransaction(); SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash); if (mNavFadeIn.value > mNavFadeIn.getStartValue()) { TaskViewSimulator taskViewSimulator = handle.getTaskViewSimulator(); taskViewSimulator.getCurrentCropRect().round(cropRect); navBuilder.setMatrix(taskViewSimulator.getCurrentMatrix()) .setWindowCrop(cropRect) .setAlpha(mNavFadeIn.value); navBuilder.withMatrix(taskViewSimulator.getCurrentMatrix()) .withWindowCrop(cropRect) .withAlpha(mNavFadeIn.value); } else { navBuilder.setAlpha(mNavFadeOut.value); navBuilder.withAlpha(mNavFadeOut.value); } handle.getTransformParams().applySurfaceParams(transaction); handle.getTransformParams().applySurfaceParams(navBuilder.build()); } } }); Loading Loading @@ -478,7 +474,7 @@ public final class TaskViewUtils { * If {@param launchingTaskView} is not null, then this will play the tasks launch animation * from the position of the GroupedTaskView (when user taps on the TaskView to start it). * Technically this case should be taken care of by * {@link #composeRecentsSplitLaunchAnimatorLegacy} below, but the way we launch tasks whether * {@link #composeRecentsSplitLaunchAnimatorLegacy()} below, but the way we launch tasks whether * it's a single task or multiple tasks results in different entry-points. * * If it is null, then it will simply fade in the starting apps and fade out launcher (for the Loading