Merge "Fix navbar to home for All Apps." into main

This commit is contained in:
Andy Wickham
2025-04-18 22:45:01 -07:00
committed by Android (Google) Code Review
6 changed files with 59 additions and 10 deletions
@@ -28,6 +28,7 @@ import static com.android.launcher3.allapps.AllAppsTransitionController.ALL_APPS
import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
import static com.android.launcher3.util.NavigationMode.THREE_BUTTONS;
import static com.android.launcher3.util.ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import android.animation.AnimatorSet;
@@ -44,7 +45,6 @@ import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.anim.PendingAnimation;
import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.touch.SingleAxisSwipeDetector;
import com.android.launcher3.util.DisplayController;
@@ -157,10 +157,16 @@ public class NavBarToHomeTouchController implements TouchController,
AbstractFloatingView.closeOpenContainer(mLauncher, AbstractFloatingView.TYPE_TASK_MENU);
} else if (mStartState == ALL_APPS) {
AllAppsTransitionController allAppsController = mLauncher.getAllAppsController();
builder.setFloat(allAppsController, ALL_APPS_PULL_BACK_TRANSLATION,
-mPullbackDistance, PULLBACK_INTERPOLATOR);
builder.setFloat(allAppsController, ALL_APPS_PULL_BACK_ALPHA,
0.5f, PULLBACK_INTERPOLATOR);
if (mLauncher.getDeviceProfile().shouldShowAllAppsOnSheet()) {
allAppsController.setShouldScaleHeader(true);
builder.addAnimatedFloat(allAppsController.getAllAppScale(), 1f,
PREDICTIVE_BACK_MIN_SCALE, PULLBACK_INTERPOLATOR);
} else {
builder.setFloat(allAppsController, ALL_APPS_PULL_BACK_TRANSLATION,
-mPullbackDistance, PULLBACK_INTERPOLATOR);
builder.setFloat(allAppsController, ALL_APPS_PULL_BACK_ALPHA,
0.5f, PULLBACK_INTERPOLATOR);
}
}
AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mLauncher);
if (topView != null) {
@@ -153,7 +153,7 @@ public class BaseDepthController {
}
public void pauseBlursOnWindows(boolean pause) {
if (pause == mPauseBlurs) {
if (mPauseBlurs == pause) {
return;
}
mPauseBlurs = pause;
+5 -1
View File
@@ -447,7 +447,11 @@ public abstract class LauncherState implements BaseState<LauncherState> {
}
/** Called when predictive back gesture is started. */
public void onBackStarted(Launcher launcher) {}
public void onBackStarted(Launcher launcher) {
StateManager<LauncherState, Launcher> lsm = launcher.getStateManager();
LauncherState toState = lsm.getLastState();
lsm.onBackStarted(toState);
}
/**
* Called when back action is invoked. This can happen when:
@@ -553,6 +553,13 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
return mIsSearching;
}
/**
* @return {@code true} if back gesture should exit search rather than change launcher state.
*/
public boolean shouldBackExitSearch() {
return isSearching();
}
@Override
public void onActivePageChanged(int currentActivePage) {
if (mSearchTransitionController.isRunning()) {
@@ -187,6 +187,8 @@ public class AllAppsTransitionController
private boolean mHasScaleEffect;
private final MSDLPlayerWrapper mMSDLPlayerWrapper;
// Indicates whether this transition should scale the allapps header in addition to its content.
private boolean mShouldScaleHeader;
public AllAppsTransitionController(Launcher l) {
mLauncher = l;
@@ -273,6 +275,11 @@ public class AllAppsTransitionController
setAlphas(state, new StateAnimationConfig(), NO_ANIM_PROPERTY_SETTER);
}
@Override
public void onBackStarted(LauncherState toState) {
setShouldScaleHeader(!mLauncher.getAppsView().shouldBackExitSearch());
}
@Override
public void onBackProgressed(
LauncherState toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {
@@ -290,8 +297,8 @@ public class AllAppsTransitionController
private void onScaleProgressChanged() {
final float scaleProgress = mAllAppScale.value;
SCALE_PROPERTY.set(mLauncher.getAppsView(), scaleProgress);
if (!mLauncher.getAppsView().isSearching()
|| !mLauncher.getDeviceProfile().shouldShowAllAppsOnSheet()) {
if (mShouldScaleHeader || !mShouldShowAllAppsOnSheet) {
mLauncher.getScrimView().setScrimHeaderScale(scaleProgress);
}
@@ -313,6 +320,21 @@ public class AllAppsTransitionController
}
}
/**
* @return AnimatedFloat for all apps scale. This will scale the allapps content by default.
* @see #setShouldScaleHeader(boolean)
*/
public AnimatedFloat getAllAppScale() {
return mAllAppScale;
}
/**
* Specify whether this transition should scale the allapps header in addition to its content.
*/
public void setShouldScaleHeader(boolean shouldScaleHeader) {
mShouldScaleHeader = shouldScaleHeader;
}
/** Set {@link Animator.AnimatorListener} for scaling all apps scale to 1 animation. */
public void setAllAppsSearchBackAnimationListener(Animator.AnimatorListener listener) {
mAllAppsSearchBackAnimationListener = listener;
@@ -324,7 +346,7 @@ public class AllAppsTransitionController
*/
public void animateAllAppsToNoScale() {
if (mAllAppScale.isAnimating()) {
return;
mAllAppScale.cancelAnimation();
}
Animator animator = mAllAppScale.animateToValue(1f)
.setDuration(REVERT_SWIPE_ALL_APPS_TO_HOME_ANIMATION_DURATION_MS);
@@ -226,6 +226,13 @@ public class StateManager<S extends BaseState<S>, T extends StatefulContainer<S>
}
}
/** Handles back started in predictive back gesture by passing it to state handlers. */
public void onBackStarted(S toState) {
for (StateHandler<S> handler : getStateHandlers()) {
handler.onBackStarted(toState);
}
}
/** Handles backProgress in predictive back gesture by passing it to state handlers. */
public void onBackProgressed(
S toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {
@@ -687,6 +694,9 @@ public class StateManager<S extends BaseState<S>, T extends StatefulContainer<S>
void setStateWithAnimation(
STATE_TYPE toState, StateAnimationConfig config, PendingAnimation animation);
/** Handles back started in predictive back gesture for target state. */
default void onBackStarted(STATE_TYPE toState) {}
/** Handles backProgress in predictive back gesture for target state. */
default void onBackProgressed(
STATE_TYPE toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {}