diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java index 81090c1c90..3b664b79dd 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java @@ -28,9 +28,13 @@ import static com.android.launcher3.anim.Interpolators.ACCEL_2; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; import static com.android.launcher3.anim.Interpolators.INSTANT; import static com.android.launcher3.anim.Interpolators.LINEAR; +import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW; +import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; import android.view.MotionEvent; +import androidx.annotation.Nullable; + import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.LauncherStateManager; @@ -45,8 +49,6 @@ import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; -import androidx.annotation.Nullable; - /** * Handles quick switching to a recent task from the home screen. */ @@ -128,6 +130,10 @@ public class QuickSwitchTouchController extends AbstractStateChangeTouchControll private void updateFullscreenProgress(float progress) { if (mTaskToLaunch != null) { mTaskToLaunch.setFullscreenProgress(progress); + int sysuiFlags = progress > UPDATE_SYSUI_FLAGS_THRESHOLD + ? mTaskToLaunch.getThumbnail().getSysUiStatusNavFlags() + : 0; + mLauncher.getSystemUiController().updateUiState(UI_STATE_OVERVIEW, sysuiFlags); } } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java index 50f25fbf11..e932452edd 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java @@ -270,9 +270,9 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe playScaleDownAnim(anim, activity, endState); anim.setDuration(transitionLength * 2); - activity.getStateManager().setCurrentAnimation(anim); AnimatorPlaybackController controller = AnimatorPlaybackController.wrap(anim, transitionLength * 2); + activity.getStateManager().setCurrentUserControlledAnimation(controller); // Since we are changing the start position of the UI, reapply the state, at the end controller.setEndAction(() -> { diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java index 936f0aad06..58ae5eb739 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -27,6 +27,7 @@ import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TI import static com.android.launcher3.config.FeatureFlags.QUICKSTEP_SPRINGS; import static com.android.launcher3.util.RaceConditionTracker.ENTER; import static com.android.launcher3.util.RaceConditionTracker.EXIT; +import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW; import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATION; import static com.android.quickstep.ActivityControlHelper.AnimationFactory.ShelfAnimState.HIDE; import static com.android.quickstep.ActivityControlHelper.AnimationFactory.ShelfAnimState.PEEK; @@ -654,8 +655,7 @@ public class WindowTransformSwipeHandler mTransformParams.setProgress(shift).setOffsetX(offsetX).setOffsetScale(offsetScale); mClipAnimationHelper.applyTransform(mRecentsAnimationWrapper.targetSet, mTransformParams); - mRecentsAnimationWrapper.setWindowThresholdCrossed( - shift > 1 - UPDATE_SYSUI_FLAGS_THRESHOLD); + updateSysUiFlags(shift); } if (ENABLE_QUICKSTEP_LIVE_TILE.get()) { @@ -700,6 +700,18 @@ public class WindowTransformSwipeHandler ? 0 : (progress - mShiftAtGestureStart) / (1 - mShiftAtGestureStart)); } + private void updateSysUiFlags(float windowProgress) { + if (mRecentsView != null) { + // We will handle the sysui flags based on the centermost task view. + mRecentsAnimationWrapper.setWindowThresholdCrossed(true); + int sysuiFlags = windowProgress > 1 - UPDATE_SYSUI_FLAGS_THRESHOLD + ? 0 + : mRecentsView.getTaskViewAt(mRecentsView.getPageNearestToCenterOfScreen()) + .getThumbnail().getSysUiStatusNavFlags(); + mActivity.getSystemUiController().updateUiState(UI_STATE_OVERVIEW, sysuiFlags); + } + } + @Override public void onRecentsAnimationStart(SwipeAnimationTargetSet targetSet) { DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(mContext).getDeviceProfile(mContext); @@ -1091,6 +1103,7 @@ public class WindowTransformSwipeHandler windowAlphaThreshold, mClipAnimationHelper.getCurrentCornerRadius(), false); } + updateSysUiFlags(Math.max(progress, mCurrentShift.value)); }); anim.addAnimatorListener(new AnimationSuccessListener() { @Override