From f3ebdd4819fb04f18a4ca032f9f0bff6af480b6a Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Wed, 19 Jul 2023 14:15:31 -0400 Subject: [PATCH] Start drag from current translation shift during animation. Test: Manual Fix: 291950331 Flag: No Change-Id: I67fe6a474fc1b10d8e34fb047f98af2c1e6e085c --- .../launcher3/views/AbstractSlideInView.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/views/AbstractSlideInView.java b/src/com/android/launcher3/views/AbstractSlideInView.java index 91eb10970b..de10fc518b 100644 --- a/src/com/android/launcher3/views/AbstractSlideInView.java +++ b/src/com/android/launcher3/views/AbstractSlideInView.java @@ -94,6 +94,8 @@ public abstract class AbstractSlideInView // range [0, 1], 0=> completely open, 1=> completely closed protected float mTranslationShift = TRANSLATION_SHIFT_CLOSED; + /** {@link #mTranslationShift} at the invocation of {@link #onDragStart(boolean, float)}. */ + protected float mDragStartTranslationShift; protected boolean mNoIntercept; protected @Nullable OnCloseListener mOnCloseBeginListener; @@ -285,18 +287,23 @@ public abstract class AbstractSlideInView /* SingleAxisSwipeDetector.Listener */ @Override - public void onDragStart(boolean start, float startDisplacement) { } + public void onDragStart(boolean start, float startDisplacement) { + mOpenCloseAnimator.cancel(); + mDragStartTranslationShift = mTranslationShift; + } @Override public boolean onDrag(float displacement) { - float range = getShiftRange(); - displacement = Utilities.boundToRange(displacement, 0, range); - setTranslationShift(displacement / range); + setTranslationShift(Utilities.boundToRange( + mDragStartTranslationShift + displacement / getShiftRange(), + TRANSLATION_SHIFT_OPENED, + TRANSLATION_SHIFT_CLOSED)); return true; } @Override public void onDragEnd(float velocity) { + mDragStartTranslationShift = 0; float successfulShiftThreshold = mActivityContext.getDeviceProfile().isTablet ? TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS : SUCCESS_TRANSITION_PROGRESS; if ((mSwipeDetector.isFling(velocity) && velocity > 0)