Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +3 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import android.view.Gravity; import android.view.RoundedCorner; import android.view.View; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.widget.FrameLayout; import android.widget.Toast; Loading Loading @@ -185,8 +186,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { new TaskbarDragLayerController(this, mDragLayer), new TaskbarViewController(this, taskbarView), new TaskbarScrimViewController(this, taskbarScrimView), new TaskbarUnfoldAnimationController(unfoldTransitionProgressProvider, mWindowManager), new TaskbarUnfoldAnimationController(this, unfoldTransitionProgressProvider, mWindowManager, WindowManagerGlobal.getWindowManagerService()), new TaskbarKeyguardController(this), new StashedHandleViewController(this, stashedHandleView), new TaskbarStashController(this), Loading quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.statemanager.StatefulActivity; import com.android.launcher3.taskbar.unfold.NonDestroyableScopedUnfoldTransitionProgressProvider; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.Info; import com.android.launcher3.util.SettingsCache; Loading Loading @@ -74,8 +75,11 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen private final SimpleBroadcastReceiver mShutdownReceiver; // The source for this provider is set when Launcher is available // We use 'non-destroyable' version here so the original provider won't be destroyed // as it is tied to the activity lifecycle, not the taskbar lifecycle. // It's destruction/creation will be managed by the activity. private final ScopedUnfoldTransitionProgressProvider mUnfoldProgressProvider = new ScopedUnfoldTransitionProgressProvider(); new NonDestroyableScopedUnfoldTransitionProgressProvider(); private TaskbarActivityContext mTaskbarActivityContext; private StatefulActivity mActivity; Loading quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java +17 −8 Original line number Diff line number Diff line Loading @@ -15,12 +15,14 @@ */ 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.util.NaturalRotationUnfoldProgressProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; import java.io.PrintWriter; Loading @@ -31,14 +33,18 @@ import java.io.PrintWriter; public class TaskbarUnfoldAnimationController implements TaskbarControllers.LoggableTaskbarController { private final ScopedUnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider; private final ScopedUnfoldTransitionProgressProvider mScopedUnfoldTransitionProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalUnfoldTransitionProgressProvider; private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimator; private final TransitionListener mTransitionListener = new TransitionListener(); private TaskbarViewController mTaskbarViewController; public TaskbarUnfoldAnimationController(ScopedUnfoldTransitionProgressProvider unfoldTransitionProgressProvider, WindowManager windowManager) { mUnfoldTransitionProgressProvider = unfoldTransitionProgressProvider; public TaskbarUnfoldAnimationController(BaseTaskbarContext context, ScopedUnfoldTransitionProgressProvider source, WindowManager windowManager, IWindowManager iWindowManager) { mScopedUnfoldTransitionProgressProvider = source; mNaturalUnfoldTransitionProgressProvider = new NaturalRotationUnfoldProgressProvider(context, iWindowManager, source); mMoveFromCenterAnimator = new UnfoldMoveFromCenterAnimator(windowManager, new LauncherViewsMoveFromCenterTranslationApplier()); } Loading @@ -48,18 +54,21 @@ public class TaskbarUnfoldAnimationController implements * @param taskbarControllers references to all other taskbar controllers */ public void init(TaskbarControllers taskbarControllers) { mNaturalUnfoldTransitionProgressProvider.init(); mTaskbarViewController = taskbarControllers.taskbarViewController; mTaskbarViewController.addOneTimePreDrawListener(() -> mUnfoldTransitionProgressProvider.setReadyToHandleTransition(true)); mUnfoldTransitionProgressProvider.addCallback(mTransitionListener); mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(true)); mNaturalUnfoldTransitionProgressProvider.addCallback(mTransitionListener); } /** * Destroys the controller */ public void onDestroy() { mUnfoldTransitionProgressProvider.setReadyToHandleTransition(false); mUnfoldTransitionProgressProvider.removeCallback(mTransitionListener); mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(false); mNaturalUnfoldTransitionProgressProvider.removeCallback(mTransitionListener); mNaturalUnfoldTransitionProgressProvider.destroy(); mTaskbarViewController = null; } @Override Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +5 −14 Original line number Diff line number Diff line Loading @@ -20,13 +20,14 @@ import static com.android.launcher3.Utilities.squaredHypot; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.quickstep.AnimatedFloat.VALUE; import android.annotation.NonNull; import android.graphics.Rect; import android.util.FloatProperty; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnPreDrawListener; import androidx.core.view.OneShotPreDrawListener; import com.android.launcher3.BubbleTextView; import com.android.launcher3.DeviceProfile; Loading Loading @@ -143,18 +144,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar * drawing a frame and invoked only once * @param listener callback that will be invoked before drawing the next frame */ public void addOneTimePreDrawListener(Runnable listener) { mTaskbarView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { final ViewTreeObserver viewTreeObserver = mTaskbarView.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { listener.run(); viewTreeObserver.removeOnPreDrawListener(this); } return true; } }); public void addOneTimePreDrawListener(@NonNull Runnable listener) { OneShotPreDrawListener.add(mTaskbarView, listener); } public Rect getIconLayoutBounds() { Loading quickstep/src/com/android/launcher3/taskbar/unfold/NonDestroyableScopedUnfoldTransitionProgressProvider.java 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar.unfold; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; /** * ScopedUnfoldTransitionProgressProvider that doesn't propagate destroy method */ public class NonDestroyableScopedUnfoldTransitionProgressProvider extends ScopedUnfoldTransitionProgressProvider { @Override public void destroy() { // no-op } } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +3 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import android.view.Gravity; import android.view.RoundedCorner; import android.view.View; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.widget.FrameLayout; import android.widget.Toast; Loading Loading @@ -185,8 +186,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { new TaskbarDragLayerController(this, mDragLayer), new TaskbarViewController(this, taskbarView), new TaskbarScrimViewController(this, taskbarScrimView), new TaskbarUnfoldAnimationController(unfoldTransitionProgressProvider, mWindowManager), new TaskbarUnfoldAnimationController(this, unfoldTransitionProgressProvider, mWindowManager, WindowManagerGlobal.getWindowManagerService()), new TaskbarKeyguardController(this), new StashedHandleViewController(this, stashedHandleView), new TaskbarStashController(this), Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.statemanager.StatefulActivity; import com.android.launcher3.taskbar.unfold.NonDestroyableScopedUnfoldTransitionProgressProvider; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.Info; import com.android.launcher3.util.SettingsCache; Loading Loading @@ -74,8 +75,11 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen private final SimpleBroadcastReceiver mShutdownReceiver; // The source for this provider is set when Launcher is available // We use 'non-destroyable' version here so the original provider won't be destroyed // as it is tied to the activity lifecycle, not the taskbar lifecycle. // It's destruction/creation will be managed by the activity. private final ScopedUnfoldTransitionProgressProvider mUnfoldProgressProvider = new ScopedUnfoldTransitionProgressProvider(); new NonDestroyableScopedUnfoldTransitionProgressProvider(); private TaskbarActivityContext mTaskbarActivityContext; private StatefulActivity mActivity; Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java +17 −8 Original line number Diff line number Diff line Loading @@ -15,12 +15,14 @@ */ 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.util.NaturalRotationUnfoldProgressProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; import java.io.PrintWriter; Loading @@ -31,14 +33,18 @@ import java.io.PrintWriter; public class TaskbarUnfoldAnimationController implements TaskbarControllers.LoggableTaskbarController { private final ScopedUnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider; private final ScopedUnfoldTransitionProgressProvider mScopedUnfoldTransitionProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalUnfoldTransitionProgressProvider; private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimator; private final TransitionListener mTransitionListener = new TransitionListener(); private TaskbarViewController mTaskbarViewController; public TaskbarUnfoldAnimationController(ScopedUnfoldTransitionProgressProvider unfoldTransitionProgressProvider, WindowManager windowManager) { mUnfoldTransitionProgressProvider = unfoldTransitionProgressProvider; public TaskbarUnfoldAnimationController(BaseTaskbarContext context, ScopedUnfoldTransitionProgressProvider source, WindowManager windowManager, IWindowManager iWindowManager) { mScopedUnfoldTransitionProgressProvider = source; mNaturalUnfoldTransitionProgressProvider = new NaturalRotationUnfoldProgressProvider(context, iWindowManager, source); mMoveFromCenterAnimator = new UnfoldMoveFromCenterAnimator(windowManager, new LauncherViewsMoveFromCenterTranslationApplier()); } Loading @@ -48,18 +54,21 @@ public class TaskbarUnfoldAnimationController implements * @param taskbarControllers references to all other taskbar controllers */ public void init(TaskbarControllers taskbarControllers) { mNaturalUnfoldTransitionProgressProvider.init(); mTaskbarViewController = taskbarControllers.taskbarViewController; mTaskbarViewController.addOneTimePreDrawListener(() -> mUnfoldTransitionProgressProvider.setReadyToHandleTransition(true)); mUnfoldTransitionProgressProvider.addCallback(mTransitionListener); mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(true)); mNaturalUnfoldTransitionProgressProvider.addCallback(mTransitionListener); } /** * Destroys the controller */ public void onDestroy() { mUnfoldTransitionProgressProvider.setReadyToHandleTransition(false); mUnfoldTransitionProgressProvider.removeCallback(mTransitionListener); mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(false); mNaturalUnfoldTransitionProgressProvider.removeCallback(mTransitionListener); mNaturalUnfoldTransitionProgressProvider.destroy(); mTaskbarViewController = null; } @Override Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +5 −14 Original line number Diff line number Diff line Loading @@ -20,13 +20,14 @@ import static com.android.launcher3.Utilities.squaredHypot; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.quickstep.AnimatedFloat.VALUE; import android.annotation.NonNull; import android.graphics.Rect; import android.util.FloatProperty; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnPreDrawListener; import androidx.core.view.OneShotPreDrawListener; import com.android.launcher3.BubbleTextView; import com.android.launcher3.DeviceProfile; Loading Loading @@ -143,18 +144,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar * drawing a frame and invoked only once * @param listener callback that will be invoked before drawing the next frame */ public void addOneTimePreDrawListener(Runnable listener) { mTaskbarView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { final ViewTreeObserver viewTreeObserver = mTaskbarView.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { listener.run(); viewTreeObserver.removeOnPreDrawListener(this); } return true; } }); public void addOneTimePreDrawListener(@NonNull Runnable listener) { OneShotPreDrawListener.add(mTaskbarView, listener); } public Rect getIconLayoutBounds() { Loading
quickstep/src/com/android/launcher3/taskbar/unfold/NonDestroyableScopedUnfoldTransitionProgressProvider.java 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar.unfold; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; /** * ScopedUnfoldTransitionProgressProvider that doesn't propagate destroy method */ public class NonDestroyableScopedUnfoldTransitionProgressProvider extends ScopedUnfoldTransitionProgressProvider { @Override public void destroy() { // no-op } }