Merge "Override displacement for transient taskbar instead of mCurrentShift" into tm-qpr-dev
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 4f1bd3d..9aedbf8 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -825,7 +825,7 @@
return;
}
mLauncherTransitionController.setProgress(
- Math.max(getTaskbarProgress(), getScaleProgressDueToScroll()), mDragLengthFactor);
+ Math.max(mCurrentShift.value, getScaleProgressDueToScroll()), mDragLengthFactor);
}
/**
@@ -2187,7 +2187,7 @@
AnimatorControllerWithResistance playbackController =
remoteHandle.getPlaybackController();
if (playbackController != null) {
- playbackController.setProgress(Math.max(getTaskbarProgress(),
+ playbackController.setProgress(Math.max(mCurrentShift.value,
getScaleProgressDueToScroll()), mDragLengthFactor);
}
@@ -2239,31 +2239,32 @@
}
/**
- * Overrides the current shift progress to keep the app window at the bottom of the screen
- * while the transient taskbar is being swiped in.
+ * Overrides the gesture displacement to keep the app window at the bottom of the screen while
+ * the transient taskbar is being swiped in.
*
* There is also a catch up period so that the window can start moving 1:1 with the swipe.
*/
- private float getTaskbarProgress() {
+ @Override
+ protected float overrideDisplacementForTransientTaskbar(float displacement) {
if (!mIsTransientTaskbar) {
- return mCurrentShift.value;
+ return displacement;
}
if (mTaskbarAlreadyOpen) {
- return mCurrentShift.value;
+ return displacement;
}
- if (mCurrentDisplacement < mTaskbarAppWindowThreshold) {
+ if (displacement < mTaskbarAppWindowThreshold) {
return 0;
}
- // "Catch up" with `mCurrentShift.value`.
- if (mCurrentDisplacement < mTaskbarCatchUpThreshold) {
- return Utilities.mapToRange(mCurrentDisplacement, mTaskbarAppWindowThreshold,
- mTaskbarCatchUpThreshold, 0, mCurrentShift.value, ACCEL_DEACCEL);
+ // "Catch up" with the displacement at mTaskbarCatchUpThreshold.
+ if (displacement < mTaskbarCatchUpThreshold) {
+ return Utilities.mapToRange(displacement, mTaskbarAppWindowThreshold,
+ mTaskbarCatchUpThreshold, 0, mTaskbarCatchUpThreshold, ACCEL_DEACCEL);
}
- return mCurrentShift.value;
+ return displacement;
}
private void setDividerShown(boolean shown, boolean immediate) {
diff --git a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
index ddb06ce..fdde45a 100644
--- a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
+++ b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
@@ -116,7 +116,7 @@
@UiThread
public void updateDisplacement(float displacement) {
// We are moving in the negative x/y direction
- displacement = -displacement;
+ displacement = overrideDisplacementForTransientTaskbar(-displacement);
mCurrentDisplacement = displacement;
float shift;
@@ -131,6 +131,17 @@
}
/**
+ * When Transient Taskbar is enabled, subclasses can override the displacement to keep the app
+ * window at the bottom of the screen while taskbar is being swiped in.
+ * @param displacement The distance the user has swiped up from the bottom of the screen. This
+ * value will be positive unless the user swipe downwards.
+ * @return the overridden displacement.
+ */
+ protected float overrideDisplacementForTransientTaskbar(float displacement) {
+ return displacement;
+ }
+
+ /**
* Called when the value of {@link #mCurrentShift} changes
*/
@UiThread