Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4afab0b2 authored by Nicolò Mazzucato's avatar Nicolò Mazzucato Committed by Android (Google) Code Review
Browse files

Merge "Cancel unfold animation when rotation changes" into tm-qpr-dev

parents 0bc70442 74c3a002
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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),
+7 −3
Original line number Diff line number Diff line
@@ -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) {
+17 −5
Original line number Diff line number Diff line
@@ -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
            );
        }
    }
+20 −1
Original line number Diff line number Diff line
@@ -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();
        }
    }
}
+6 −5
Original line number Diff line number Diff line
@@ -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
Loading