diff options
author | Tony Wickham <twickham@google.com> | 2019-05-06 14:45:59 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2019-05-06 14:45:59 -0700 |
commit | 0c947f97703b90a1cd9c5a20cdd316fa9e305d1d (patch) | |
tree | 6cd15eb3b25baa2160178b43461d30c8182d2d40 | |
parent | 752df2ce3b04f016c4078220f6375cf20cbb2beb (diff) | |
download | packages_apps_Trebuchet-0c947f97703b90a1cd9c5a20cdd316fa9e305d1d.tar.gz packages_apps_Trebuchet-0c947f97703b90a1cd9c5a20cdd316fa9e305d1d.tar.bz2 packages_apps_Trebuchet-0c947f97703b90a1cd9c5a20cdd316fa9e305d1d.zip |
Update sysui flags
- Launcher always controlls sysui flags during quickstep gestures.
- If we passed window threshold (i.e. window isn't under system
bars), use same flags as home screen
- Else use sysui flags of the centermost TaskView
- Update sysui flags based on home animation progress as well
(otherwise we weren't applying home screen sysui flags until
the end of the animation if you ended the swipe before crossing
the window threshold).
- Update sysui flags for quick switch from home
- Specify that the activity controller animation is user-controlled
so we don't reapply state when re-setting it. This happens when
we get window insets, for instance, which we get when changing
sysui flags.
Bug: 131360249
Bug: 130020567
Change-Id: If82dbf75fe663fd690b816cdc1c4366cc2bf75b1
3 files changed, 24 insertions, 5 deletions
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 81090c1c9..3b664b79d 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 50f25fbf1..e932452ed 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 936f0aad0..58ae5eb73 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<T extends BaseDraggingActivity> 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<T extends BaseDraggingActivity> ? 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<T extends BaseDraggingActivity> windowAlphaThreshold, mClipAnimationHelper.getCurrentCornerRadius(), false); } + updateSysUiFlags(Math.max(progress, mCurrentShift.value)); }); anim.addAnimatorListener(new AnimationSuccessListener() { @Override |