Merge "Override displacement for transient taskbar instead of mCurrentShift" into tm-qpr-dev

This commit is contained in:
Tony Wickham
2022-11-22 18:37:22 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 14 deletions

View File

@@ -825,7 +825,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
return;
}
mLauncherTransitionController.setProgress(
Math.max(getTaskbarProgress(), getScaleProgressDueToScroll()), mDragLengthFactor);
Math.max(mCurrentShift.value, getScaleProgressDueToScroll()), mDragLengthFactor);
}
/**
@@ -2187,7 +2187,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
AnimatorControllerWithResistance playbackController =
remoteHandle.getPlaybackController();
if (playbackController != null) {
playbackController.setProgress(Math.max(getTaskbarProgress(),
playbackController.setProgress(Math.max(mCurrentShift.value,
getScaleProgressDueToScroll()), mDragLengthFactor);
}
@@ -2239,31 +2239,32 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
}
/**
* 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) {

View File

@@ -116,7 +116,7 @@ public abstract class SwipeUpAnimationLogic implements
@UiThread
public void updateDisplacement(float displacement) {
// We are moving in the negative x/y direction
displacement = -displacement;
displacement = overrideDisplacementForTransientTaskbar(-displacement);
mCurrentDisplacement = displacement;
float shift;
@@ -130,6 +130,17 @@ public abstract class SwipeUpAnimationLogic implements
mCurrentShift.updateValue(shift);
}
/**
* 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
*/