Merge "Revert "Revert "Exposing AnimatorListeners in StateManager to receive both success and failure callback""" into sc-dev am: 10dfa61db8
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/14532343 Change-Id: I5cbd3a1fbd5370e52b2748e9545beec232bd016f
This commit is contained in:
@@ -17,6 +17,7 @@ package com.android.launcher3.hybridhotseat;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
|
||||
import static com.android.launcher3.hybridhotseat.HotseatEduController.getSettingsIntent;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_PREDICTION_PINNED;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_RANKED;
|
||||
@@ -150,7 +151,7 @@ public class HotseatPredictionController implements DragController.DragListener,
|
||||
* Shows appropriate hotseat education based on prediction enabled and migration states.
|
||||
*/
|
||||
public void showEdu() {
|
||||
mLauncher.getStateManager().goToState(NORMAL, true, () -> {
|
||||
mLauncher.getStateManager().goToState(NORMAL, true, forSuccessCallback(() -> {
|
||||
if (mPredictedItems.isEmpty()) {
|
||||
// launcher has empty predictions set
|
||||
Snackbar.show(mLauncher, R.string.hotsaet_tip_prediction_disabled,
|
||||
@@ -165,7 +166,7 @@ public class HotseatPredictionController implements DragController.DragListener,
|
||||
.collect(Collectors.toList()));
|
||||
eduController.showEdu();
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -255,8 +256,8 @@ public class HotseatPredictionController implements DragController.DragListener,
|
||||
}
|
||||
}
|
||||
if (animate) {
|
||||
animationSet.addListener(AnimationSuccessListener
|
||||
.forRunnable(this::removeOutlineDrawings));
|
||||
animationSet.addListener(
|
||||
forSuccessCallback(this::removeOutlineDrawings));
|
||||
animationSet.start();
|
||||
} else {
|
||||
removeOutlineDrawings();
|
||||
|
||||
@@ -35,7 +35,7 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.launcher3.BaseQuickstepLauncher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.launcher3.anim.PropertySetter;
|
||||
import com.android.launcher3.states.StateAnimationConfig;
|
||||
@@ -78,7 +78,7 @@ public final class RecentsViewStateController extends
|
||||
mRecentsView.updateEmptyMessage();
|
||||
} else {
|
||||
builder.addListener(
|
||||
AnimationSuccessListener.forRunnable(mRecentsView::resetTaskVisuals));
|
||||
AnimatorListeners.forSuccessCallback(mRecentsView::resetTaskVisuals));
|
||||
}
|
||||
|
||||
// Create or dismiss split screen select animations
|
||||
|
||||
+3
-4
@@ -22,6 +22,7 @@ import static com.android.launcher3.LauncherAnimUtils.newCancelListener;
|
||||
import static com.android.launcher3.LauncherState.ALL_APPS;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.allapps.AllAppsTransitionController.ALL_APPS_PROGRESS;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
|
||||
import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_ALL_APPS_EDU;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
|
||||
@@ -38,7 +39,6 @@ import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.AllAppsTransitionController;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
@@ -199,7 +199,7 @@ public class NavBarToHomeTouchController implements TouchController,
|
||||
.animateWithVelocity(velocity);
|
||||
} else {
|
||||
mLauncher.getStateManager().goToState(mEndState, true,
|
||||
() -> onSwipeInteractionCompleted(mEndState));
|
||||
forSuccessCallback(() -> onSwipeInteractionCompleted(mEndState)));
|
||||
}
|
||||
if (mStartState != mEndState) {
|
||||
logHomeGesture();
|
||||
@@ -214,8 +214,7 @@ public class NavBarToHomeTouchController implements TouchController,
|
||||
// Quickly return to the state we came from (we didn't move far).
|
||||
ValueAnimator anim = mCurrentAnimation.getAnimationPlayer();
|
||||
anim.setFloatValues(progress, 0);
|
||||
anim.addListener(AnimationSuccessListener.forRunnable(
|
||||
() -> onSwipeInteractionCompleted(mStartState)));
|
||||
anim.addListener(forSuccessCallback(() -> onSwipeInteractionCompleted(mStartState)));
|
||||
anim.setDuration(80).start();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -22,6 +22,7 @@ import static com.android.launcher3.LauncherState.HINT_STATE;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
import static com.android.launcher3.Utilities.EDGE_NAV_BAR;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
|
||||
import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
|
||||
@@ -172,13 +173,13 @@ public class NoButtonNavbarToOverviewTouchController extends PortraitStatesTouch
|
||||
}
|
||||
mNormalToHintOverviewScrimAnimator = null;
|
||||
mCurrentAnimation.getTarget().addListener(newCancelListener(() ->
|
||||
mLauncher.getStateManager().goToState(OVERVIEW, true, () -> {
|
||||
mLauncher.getStateManager().goToState(OVERVIEW, true, forSuccessCallback(() -> {
|
||||
mOverviewResistYAnim = AnimatorControllerWithResistance
|
||||
.createRecentsResistanceFromOverviewAnim(mLauncher, null)
|
||||
.createPlaybackController();
|
||||
mReachedOverview = true;
|
||||
maybeSwipeInteractionToOverviewComplete();
|
||||
})));
|
||||
}))));
|
||||
|
||||
mCurrentAnimation.getTarget().removeListener(mClearStateOnCancelListener);
|
||||
mCurrentAnimation.dispatchOnCancel();
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@ import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW_ACTIONS;
|
||||
import static com.android.launcher3.LauncherState.QUICK_SWITCH;
|
||||
import static com.android.launcher3.anim.AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_0_75;
|
||||
import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
@@ -418,7 +419,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
|
||||
targetState.ordinal > mStartState.ordinal
|
||||
? LAUNCHER_UNKNOWN_SWIPEUP
|
||||
: LAUNCHER_UNKNOWN_SWIPEDOWN));
|
||||
mLauncher.getStateManager().goToState(targetState, false, this::clearState);
|
||||
mLauncher.getStateManager().goToState(targetState, false, forEndCallback(this::clearState));
|
||||
}
|
||||
|
||||
private void cancelAnimations() {
|
||||
|
||||
@@ -19,6 +19,7 @@ import static com.android.launcher3.LauncherState.BACKGROUND_APP;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
import static com.android.launcher3.LauncherState.QUICK_SWITCH;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
|
||||
@@ -197,7 +198,8 @@ public final class LauncherActivityInterface extends
|
||||
|
||||
closeOverlay();
|
||||
launcher.getStateManager().goToState(OVERVIEW,
|
||||
launcher.getStateManager().shouldAnimateStateChange(), onCompleteCallback);
|
||||
launcher.getStateManager().shouldAnimateStateChange(),
|
||||
onCompleteCallback == null ? null : forEndCallback(onCompleteCallback));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -43,7 +43,7 @@ import androidx.annotation.Nullable;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.InvariantDeviceProfile;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
@@ -156,7 +156,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
fadeAnim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
|
||||
}
|
||||
if (onEndRunnable != null) {
|
||||
fadeAnim.addListener(AnimationSuccessListener.forRunnable(onEndRunnable));
|
||||
fadeAnim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
|
||||
}
|
||||
AnimatorSet animset = fadeAnim.buildAnim();
|
||||
animset.setStartDelay(100);
|
||||
@@ -174,7 +174,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
anim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
|
||||
}
|
||||
if (onEndRunnable != null) {
|
||||
anim.addListener(AnimationSuccessListener.forRunnable(onEndRunnable));
|
||||
anim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
|
||||
}
|
||||
}
|
||||
AnimatorSet animset = anim.buildAnim();
|
||||
@@ -205,10 +205,10 @@ abstract class SwipeUpGestureTutorialController extends TutorialController {
|
||||
PendingAnimation fadeAnim = new PendingAnimation(300);
|
||||
fadeAnim.setViewAlpha(mFakeIconView, 0, ACCEL);
|
||||
if (onEndRunnable != null) {
|
||||
fadeAnim.addListener(AnimationSuccessListener.forRunnable(onEndRunnable));
|
||||
fadeAnim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
|
||||
}
|
||||
AnimatorSet animset = fadeAnim.buildAnim();
|
||||
rectAnim.addAnimatorListener(AnimationSuccessListener.forRunnable(animset::start));
|
||||
rectAnim.addAnimatorListener(AnimatorListeners.forSuccessCallback(animset::start));
|
||||
mRunningWindowAnim = RunningWindowAnim.wrap(rectAnim);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.views.ClipIconView;
|
||||
import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureAttemptCallback;
|
||||
import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureAttemptCallback;
|
||||
@@ -141,7 +141,7 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
}
|
||||
|
||||
void fadeTaskViewAndRun(Runnable r) {
|
||||
mFakeTaskView.animate().alpha(0).setListener(AnimationSuccessListener.forRunnable(r));
|
||||
mFakeTaskView.animate().alpha(0).setListener(AnimatorListeners.forSuccessCallback(r));
|
||||
}
|
||||
|
||||
@StringRes
|
||||
@@ -359,8 +359,8 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mContext, getMockLauncherResId()));
|
||||
mFakeTaskView.setBackground(AppCompatResources.getDrawable(
|
||||
mContext, getMockAppTaskThumbnailResId()));
|
||||
mFakeTaskView.animate().alpha(1).setListener(AnimationSuccessListener.forRunnable(
|
||||
() -> mFakeTaskView.animate().cancel()));
|
||||
mFakeTaskView.animate().alpha(1).setListener(
|
||||
AnimatorListeners.forSuccessCallback(() -> mFakeTaskView.animate().cancel()));
|
||||
mFakePreviousTaskView.setBackground(AppCompatResources.getDrawable(
|
||||
mContext, getMockPreviousAppTaskThumbnailResId()));
|
||||
mFakeIconView.setBackground(AppCompatResources.getDrawable(
|
||||
|
||||
@@ -111,6 +111,7 @@ import com.android.launcher3.PagedView;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.launcher3.anim.SpringProperty;
|
||||
@@ -120,7 +121,6 @@ import com.android.launcher3.icons.cache.HandlerRunnable;
|
||||
import com.android.launcher3.statehandlers.DepthController;
|
||||
import com.android.launcher3.statemanager.BaseState;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.touch.OverScroll;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.launcher3.util.DynamicResource;
|
||||
@@ -1677,7 +1677,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
return;
|
||||
}
|
||||
AnimatorSet pa = setRecentsChangedOrientation(true);
|
||||
pa.addListener(AnimationSuccessListener.forRunnable(() -> {
|
||||
pa.addListener(AnimatorListeners.forSuccessCallback(() -> {
|
||||
setLayoutRotation(newRotation, mOrientationState.getDisplayRotation());
|
||||
mActivity.getDragLayer().recreateControllers();
|
||||
updateChildTaskOrientations();
|
||||
|
||||
Reference in New Issue
Block a user