mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 02:38:20 +00:00
Merge "Cancel manual animation if LauncherState changes during drag." into 24D1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
85e9c6f1a2
@@ -19,7 +19,7 @@ import static com.android.app.animation.Interpolators.DECELERATE_3;
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL_APPS_EDU;
|
||||
import static com.android.launcher3.LauncherAnimUtils.SUCCESS_TRANSITION_PROGRESS;
|
||||
import static com.android.launcher3.LauncherAnimUtils.newCancelListener;
|
||||
import static com.android.launcher3.LauncherAnimUtils.newSingleUseCancelListener;
|
||||
import static com.android.launcher3.LauncherState.ALL_APPS;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.MotionEventsUtils.isTrackpadMotionEvent;
|
||||
@@ -165,7 +165,7 @@ public class NavBarToHomeTouchController implements TouchController,
|
||||
topView.addHintCloseAnim(mPullbackDistance, PULLBACK_INTERPOLATOR, builder);
|
||||
}
|
||||
mCurrentAnimation = builder.createPlaybackController();
|
||||
mCurrentAnimation.getTarget().addListener(newCancelListener(this::clearState));
|
||||
mCurrentAnimation.getTarget().addListener(newSingleUseCancelListener(this::clearState));
|
||||
}
|
||||
|
||||
private void clearState() {
|
||||
|
||||
@@ -18,7 +18,7 @@ package com.android.launcher3.uioverrides.touchcontrollers;
|
||||
|
||||
import static com.android.app.animation.Interpolators.ACCELERATE_DECELERATE;
|
||||
import static com.android.launcher3.LauncherAnimUtils.VIEW_BACKGROUND_COLOR;
|
||||
import static com.android.launcher3.LauncherAnimUtils.newCancelListener;
|
||||
import static com.android.launcher3.LauncherAnimUtils.newSingleUseCancelListener;
|
||||
import static com.android.launcher3.LauncherState.ALL_APPS;
|
||||
import static com.android.launcher3.LauncherState.HINT_STATE;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
@@ -226,7 +226,7 @@ public class NoButtonNavbarToOverviewTouchController extends PortraitStatesTouch
|
||||
return;
|
||||
}
|
||||
mNormalToHintOverviewScrimAnimator = null;
|
||||
mCurrentAnimation.getTarget().addListener(newCancelListener(() ->
|
||||
mCurrentAnimation.getTarget().addListener(newSingleUseCancelListener(() ->
|
||||
mLauncher.getStateManager().goToState(OVERVIEW, true, forSuccessCallback(() -> {
|
||||
mOverviewResistYAnim = AnimatorControllerWithResistance
|
||||
.createRecentsResistanceFromOverviewAnim(mLauncher, null)
|
||||
|
||||
@@ -111,7 +111,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
|
||||
private final float mMotionPauseMinDisplacement;
|
||||
private final LauncherRecentsView mRecentsView;
|
||||
protected final AnimatorListener mClearStateOnCancelListener =
|
||||
newCancelListener(this::clearState);
|
||||
newCancelListener(this::clearState, /* isSingleUse = */ false);
|
||||
|
||||
private boolean mNoIntercept;
|
||||
private LauncherState mStartState;
|
||||
|
||||
@@ -220,17 +220,28 @@ public class LauncherAnimUtils {
|
||||
|
||||
/**
|
||||
* Utility method to create an {@link AnimatorListener} which executes a callback on animation
|
||||
* cancel.
|
||||
* cancel. Once the cancel has been dispatched, this listener will no longer be called.
|
||||
*/
|
||||
public static AnimatorListener newCancelListener(Runnable callback) {
|
||||
return new AnimatorListenerAdapter() {
|
||||
public static AnimatorListener newSingleUseCancelListener(Runnable callback) {
|
||||
return newCancelListener(callback, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility method to create an {@link AnimatorListener} which executes a callback on animation
|
||||
* cancel.
|
||||
*
|
||||
* @param isSingleUse {@code true} means the callback will be called at most once
|
||||
*/
|
||||
public static AnimatorListener newCancelListener(Runnable callback, boolean isSingleUse) {
|
||||
return new AnimatorListenerAdapter() {
|
||||
boolean mDispatched = false;
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
if (!mDispatched) {
|
||||
mDispatched = true;
|
||||
if (isSingleUse) {
|
||||
mDispatched = true;
|
||||
}
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public abstract class AbstractStateChangeTouchController
|
||||
protected final SingleAxisSwipeDetector.Direction mSwipeDirection;
|
||||
|
||||
protected final AnimatorListener mClearStateOnCancelListener =
|
||||
newCancelListener(this::clearState);
|
||||
newCancelListener(this::clearState, /* isSingleUse = */ false);
|
||||
private final FlingBlockCheck mFlingBlockCheck = new FlingBlockCheck();
|
||||
|
||||
protected int mStartContainerType;
|
||||
|
||||
Reference in New Issue
Block a user