mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-05 10:26:52 +00:00
Merge "Cancel unfold animation when rotation changes" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4afab0b210
@@ -89,6 +89,7 @@ import com.android.launcher3.views.ActivityContext;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -198,7 +199,9 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
new TaskbarViewController(this, taskbarView),
|
||||
new TaskbarScrimViewController(this, taskbarScrimView),
|
||||
new TaskbarUnfoldAnimationController(this, unfoldTransitionProgressProvider,
|
||||
mWindowManager, WindowManagerGlobal.getWindowManagerService()),
|
||||
mWindowManager,
|
||||
new RotationChangeProvider(WindowManagerGlobal.getWindowManagerService(), this,
|
||||
getMainExecutor())),
|
||||
new TaskbarKeyguardController(this),
|
||||
new StashedHandleViewController(this, stashedHandleView),
|
||||
new TaskbarStashController(this),
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import android.view.IWindowManager;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.android.quickstep.util.LauncherViewsMoveFromCenterTranslationApplier;
|
||||
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
|
||||
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
|
||||
|
||||
@@ -41,16 +41,20 @@ public class TaskbarUnfoldAnimationController implements
|
||||
|
||||
public TaskbarUnfoldAnimationController(BaseTaskbarContext context,
|
||||
ScopedUnfoldTransitionProgressProvider source,
|
||||
WindowManager windowManager, IWindowManager iWindowManager) {
|
||||
WindowManager windowManager,
|
||||
RotationChangeProvider rotationChangeProvider) {
|
||||
mScopedUnfoldTransitionProgressProvider = source;
|
||||
mNaturalUnfoldTransitionProgressProvider =
|
||||
new NaturalRotationUnfoldProgressProvider(context, iWindowManager, source);
|
||||
new NaturalRotationUnfoldProgressProvider(context,
|
||||
rotationChangeProvider,
|
||||
source);
|
||||
mMoveFromCenterAnimator = new UnfoldMoveFromCenterAnimator(windowManager,
|
||||
new LauncherViewsMoveFromCenterTranslationApplier());
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the controller
|
||||
*
|
||||
* @param taskbarControllers references to all other taskbar controllers
|
||||
*/
|
||||
public void init(TaskbarControllers taskbarControllers) {
|
||||
|
||||
@@ -66,6 +66,7 @@ import android.os.SystemProperties;
|
||||
import android.view.Display;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.View;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.window.SplashScreen;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -139,12 +140,14 @@ import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.unfold.UnfoldSharedComponent;
|
||||
import com.android.systemui.unfold.UnfoldTransitionFactory;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
|
||||
import com.android.systemui.unfold.config.ResourceUnfoldTransitionConfig;
|
||||
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
|
||||
import com.android.systemui.unfold.system.ActivityManagerActivityTypeProvider;
|
||||
import com.android.systemui.unfold.system.DeviceStateManagerFoldProvider;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -173,6 +176,7 @@ public class QuickstepLauncher extends Launcher {
|
||||
// Will be updated when dragging from taskbar.
|
||||
private @Nullable DragOptions mNextWorkspaceDragOptions = null;
|
||||
private @Nullable UnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider;
|
||||
private @Nullable RotationChangeProvider mRotationChangeProvider;
|
||||
private @Nullable LauncherUnfoldAnimationController mLauncherUnfoldAnimationController;
|
||||
/**
|
||||
* If Launcher restarted while in the middle of an Overview split select, it needs this data to
|
||||
@@ -664,8 +668,8 @@ public class QuickstepLauncher extends Launcher {
|
||||
private void initUnfoldTransitionProgressProvider() {
|
||||
final UnfoldTransitionConfig config = new ResourceUnfoldTransitionConfig();
|
||||
if (config.isEnabled()) {
|
||||
mUnfoldTransitionProgressProvider =
|
||||
UnfoldTransitionFactory.createUnfoldTransitionProgressProvider(
|
||||
UnfoldSharedComponent unfoldComponent =
|
||||
UnfoldTransitionFactory.createUnfoldSharedComponent(
|
||||
/* context= */ this,
|
||||
config,
|
||||
ProxyScreenStatusProvider.INSTANCE,
|
||||
@@ -677,13 +681,21 @@ public class QuickstepLauncher extends Launcher {
|
||||
getMainThreadHandler(),
|
||||
getMainExecutor(),
|
||||
/* backgroundExecutor= */ THREAD_POOL_EXECUTOR,
|
||||
/* tracingTagPrefix= */ "launcher"
|
||||
/* tracingTagPrefix= */ "launcher",
|
||||
WindowManagerGlobal.getWindowManagerService()
|
||||
);
|
||||
|
||||
mUnfoldTransitionProgressProvider = unfoldComponent.getUnfoldTransitionProvider()
|
||||
.orElseThrow(() -> new IllegalStateException(
|
||||
"Trying to create UnfoldTransitionProgressProvider when the "
|
||||
+ "transition is disabled"));
|
||||
|
||||
mRotationChangeProvider = unfoldComponent.getRotationChangeProvider();
|
||||
mLauncherUnfoldAnimationController = new LauncherUnfoldAnimationController(
|
||||
this,
|
||||
/* launcher= */ this,
|
||||
getWindowManager(),
|
||||
mUnfoldTransitionProgressProvider
|
||||
mUnfoldTransitionProgressProvider,
|
||||
mRotationChangeProvider
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import android.annotation.CallSuper;
|
||||
import android.view.Surface.Rotation;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -32,15 +34,20 @@ import java.util.Map;
|
||||
public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProgressListener {
|
||||
|
||||
private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimation;
|
||||
private final RotationChangeProvider mRotationChangeProvider;
|
||||
|
||||
private final Map<ViewGroup, Boolean> mOriginalClipToPadding = new HashMap<>();
|
||||
private final Map<ViewGroup, Boolean> mOriginalClipChildren = new HashMap<>();
|
||||
|
||||
private final UnfoldMoveFromCenterRotationListener mRotationListener =
|
||||
new UnfoldMoveFromCenterRotationListener();
|
||||
private boolean mAnimationInProgress = false;
|
||||
|
||||
public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager) {
|
||||
public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager,
|
||||
RotationChangeProvider rotationChangeProvider) {
|
||||
mMoveFromCenterAnimation = new UnfoldMoveFromCenterAnimator(windowManager,
|
||||
new LauncherViewsMoveFromCenterTranslationApplier());
|
||||
mRotationChangeProvider = rotationChangeProvider;
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
@@ -50,6 +57,7 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg
|
||||
mMoveFromCenterAnimation.updateDisplayProperties();
|
||||
onPrepareViewsForAnimation();
|
||||
onTransitionProgress(0f);
|
||||
mRotationChangeProvider.addCallback(mRotationListener);
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
@@ -62,6 +70,7 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg
|
||||
@Override
|
||||
public void onTransitionFinished() {
|
||||
mAnimationInProgress = false;
|
||||
mRotationChangeProvider.removeCallback(mRotationListener);
|
||||
mMoveFromCenterAnimation.onTransitionFinished();
|
||||
clearRegisteredViews();
|
||||
}
|
||||
@@ -109,4 +118,14 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg
|
||||
view.setClipChildren(originalClipChildren);
|
||||
}
|
||||
}
|
||||
|
||||
private class UnfoldMoveFromCenterRotationListener implements
|
||||
RotationChangeProvider.RotationListener {
|
||||
|
||||
@Override
|
||||
public void onRotationChanged(@Rotation int newRotation) {
|
||||
mMoveFromCenterAnimation.updateDisplayProperties(newRotation);
|
||||
updateRegisteredViewsIfNeeded();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.annotation.Nullable;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.MathUtils;
|
||||
import android.view.WindowManager;
|
||||
import android.view.WindowManagerGlobal;
|
||||
|
||||
import androidx.core.view.OneShotPreDrawListener;
|
||||
|
||||
@@ -34,6 +33,7 @@ import com.android.launcher3.Workspace;
|
||||
import com.android.launcher3.util.HorizontalInsettableView;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
|
||||
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
|
||||
|
||||
@@ -62,16 +62,17 @@ public class LauncherUnfoldAnimationController {
|
||||
public LauncherUnfoldAnimationController(
|
||||
Launcher launcher,
|
||||
WindowManager windowManager,
|
||||
UnfoldTransitionProgressProvider unfoldTransitionProgressProvider) {
|
||||
UnfoldTransitionProgressProvider unfoldTransitionProgressProvider,
|
||||
RotationChangeProvider rotationChangeProvider) {
|
||||
mLauncher = launcher;
|
||||
mProgressProvider = new ScopedUnfoldTransitionProgressProvider(
|
||||
unfoldTransitionProgressProvider);
|
||||
mUnfoldMoveFromCenterHotseatAnimator = new UnfoldMoveFromCenterHotseatAnimator(launcher,
|
||||
windowManager);
|
||||
windowManager, rotationChangeProvider);
|
||||
mUnfoldMoveFromCenterWorkspaceAnimator = new UnfoldMoveFromCenterWorkspaceAnimator(launcher,
|
||||
windowManager);
|
||||
windowManager, rotationChangeProvider);
|
||||
mNaturalOrientationProgressProvider = new NaturalRotationUnfoldProgressProvider(launcher,
|
||||
WindowManagerGlobal.getWindowManagerService(), mProgressProvider);
|
||||
rotationChangeProvider, mProgressProvider);
|
||||
mNaturalOrientationProgressProvider.init();
|
||||
|
||||
// Animated in all orientations
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.view.WindowManager;
|
||||
|
||||
import com.android.launcher3.Hotseat;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
|
||||
/**
|
||||
* Animation that moves hotseat icons from center to the sides (final position)
|
||||
@@ -29,8 +30,9 @@ public class UnfoldMoveFromCenterHotseatAnimator extends BaseUnfoldMoveFromCente
|
||||
|
||||
private final Launcher mLauncher;
|
||||
|
||||
public UnfoldMoveFromCenterHotseatAnimator(Launcher launcher, WindowManager windowManager) {
|
||||
super(windowManager);
|
||||
public UnfoldMoveFromCenterHotseatAnimator(Launcher launcher, WindowManager windowManager,
|
||||
RotationChangeProvider rotationChangeProvider) {
|
||||
super(windowManager, rotationChangeProvider);
|
||||
mLauncher = launcher;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.android.launcher3.CellLayout;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.ShortcutAndWidgetContainer;
|
||||
import com.android.launcher3.Workspace;
|
||||
import com.android.systemui.unfold.updates.RotationChangeProvider;
|
||||
|
||||
/**
|
||||
* Animation that moves launcher icons and widgets from center to the sides (final position)
|
||||
@@ -30,8 +31,9 @@ public class UnfoldMoveFromCenterWorkspaceAnimator extends BaseUnfoldMoveFromCen
|
||||
|
||||
private final Launcher mLauncher;
|
||||
|
||||
public UnfoldMoveFromCenterWorkspaceAnimator(Launcher launcher, WindowManager windowManager) {
|
||||
super(windowManager);
|
||||
public UnfoldMoveFromCenterWorkspaceAnimator(Launcher launcher, WindowManager windowManager,
|
||||
RotationChangeProvider rotationChangeProvider) {
|
||||
super(windowManager, rotationChangeProvider);
|
||||
mLauncher = launcher;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user