summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2019-11-13 15:38:28 -0800
committerTony Wickham <twickham@google.com>2019-11-20 18:05:06 +0000
commit09c09bba1e8e06d805eb450b21bd16223dfc2036 (patch)
treed23ee6f1cc4947f8e19187340c3659a996c34372
parentec72bf63dfde4736389ffc7ae5a0ab4d3be0653a (diff)
downloadandroid_packages_apps_Trebuchet-09c09bba1e8e06d805eb450b21bd16223dfc2036.tar.gz
android_packages_apps_Trebuchet-09c09bba1e8e06d805eb450b21bd16223dfc2036.tar.bz2
android_packages_apps_Trebuchet-09c09bba1e8e06d805eb450b21bd16223dfc2036.zip
Fix recents scale sometimes lagging behind window scale
We were previously offsetting the launcher animation progress based on when we got onGestureStart, which meant it would lag behind if onGestureStart came late. Now that we track the window instead of the launcher shelf, and we don't show the launcher animation right away in fully gestural mode anyway, we should remove this to ensure the launcher part of the animation always lines up with the app window. We also reapply state whenever predictions are enabled, e.g. when launcher starts after being force stopped, and previously this was canceling the existing state animation. We don't want to do that because predictions can be enabled at any point on a cold start, and cancelling the existing state animation means that RecentsView shows up in fullscreen and not attached to the app window for the duration of the gesture. Bug: 144454486 Change-Id: I65a2c71c9acd2f5345941ea2cff7d32c04b7be3f Merged-In: I65a2c71c9acd2f5345941ea2cff7d32c04b7be3f
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionRowView.java2
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java7
-rw-r--r--src/com/android/launcher3/Launcher.java6
3 files changed, 7 insertions, 8 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionRowView.java
index 23db5df2e..f82af62aa 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionRowView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionRowView.java
@@ -276,7 +276,7 @@ public class PredictionRowView extends LinearLayout implements
boolean predictionsEnabled = predictionCount > 0;
if (predictionsEnabled != mPredictionsEnabled) {
mPredictionsEnabled = predictionsEnabled;
- mLauncher.reapplyUi();
+ mLauncher.reapplyUi(false /* cancelCurrentAnimation */);
updateVisibility();
}
mParent.onHeightUpdated();
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 c80dede53..ff134b1f2 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -206,8 +206,6 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
private boolean mIsShelfPeeking;
private boolean mContinuingLastGesture;
- // To avoid UI jump when gesture is started, we offset the animation by the threshold.
- private float mShiftAtGestureStart = 0;
private ThumbnailData mTaskSnapshot;
@@ -580,9 +578,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
// Normalize the progress to 0 to 1, as the animation controller will clamp it to that
// anyway. The controller mimics the drag length factor by applying it to its interpolators.
float progress = mCurrentShift.value / mDragLengthFactor;
- mLauncherTransitionController.setPlayFraction(
- progress <= mShiftAtGestureStart || mShiftAtGestureStart >= 1
- ? 0 : (progress - mShiftAtGestureStart) / (1 - mShiftAtGestureStart));
+ mLauncherTransitionController.setPlayFraction(progress);
}
/**
@@ -622,7 +618,6 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
@Override
public void onGestureStarted() {
notifyGestureStartedAsync();
- mShiftAtGestureStart = mCurrentShift.value;
setStateOnUiThread(STATE_GESTURE_STARTED);
mGestureStarted = true;
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7bb618ddf..9bf690f13 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -445,12 +445,16 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
@Override
public void reapplyUi() {
+ reapplyUi(true /* cancelCurrentAnimation */);
+ }
+
+ public void reapplyUi(boolean cancelCurrentAnimation) {
if (supportsFakeLandscapeUI()) {
mRotationMode = mStableDeviceProfile == null
? RotationMode.NORMAL : UiFactory.getRotationMode(mDeviceProfile);
}
getRootView().dispatchInsets();
- getStateManager().reapplyState(true /* cancelCurrentAnimation */);
+ getStateManager().reapplyState(cancelCurrentAnimation);
}
@Override