Loading aconfig/launcher.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -339,3 +339,13 @@ flag { description: "Change fast scroller to a lettered list" bug: "358673724" } flag { name: "enable_desktop_task_alpha_animation" namespace: "launcher" description: "Enables the animation of the desktop task's background view" bug: "320307666" metadata { purpose: PURPOSE_BUGFIX } } quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +14 −4 Original line number Diff line number Diff line Loading @@ -734,11 +734,18 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, } private void maybeUpdateRecentsAttachedState() { maybeUpdateRecentsAttachedState(true /* animate */); maybeUpdateRecentsAttachedState(/* animate= */ true); } protected void maybeUpdateRecentsAttachedState(boolean animate) { maybeUpdateRecentsAttachedState(animate, false /* moveRunningTask */); maybeUpdateRecentsAttachedState(animate, /* moveRunningTask= */ false); } protected void maybeUpdateRecentsAttachedState(boolean animate, boolean moveRunningTask) { maybeUpdateRecentsAttachedState( animate, moveRunningTask, mRecentsView != null && mRecentsView.shouldUpdateRunningTaskAlpha()); } /** Loading @@ -749,8 +756,10 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, * Note this method has no effect unless the navigation mode is NO_BUTTON. * @param animate whether to animate when attaching RecentsView * @param moveRunningTask whether to move running task to front when attaching * @param updateRunningTaskAlpha Whether to update the running task's attached alpha */ private void maybeUpdateRecentsAttachedState(boolean animate, boolean moveRunningTask) { private void maybeUpdateRecentsAttachedState( boolean animate, boolean moveRunningTask, boolean updateRunningTaskAlpha) { if ((!mDeviceState.isFullyGesturalNavMode() && !mGestureState.isTrackpadGesture()) || mRecentsView == null) { return; Loading Loading @@ -781,7 +790,8 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, // TaskView jumping to new position as we move the tasks. mRecentsView.moveRunningTaskToFront(); } mAnimationFactory.setRecentsAttachedToAppWindow(recentsAttachedToAppWindow, animate); mAnimationFactory.setRecentsAttachedToAppWindow( recentsAttachedToAppWindow, animate, updateRunningTaskAlpha); // Reapply window transform throughout the attach animation, as the animation affects how // much the window is bound by overscroll (vs moving freely). Loading quickstep/src/com/android/quickstep/BaseActivityInterface.java +25 −6 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ import static com.android.app.animation.Interpolators.LINEAR; import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION; import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_ATTACHED_ALPHA_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; import static com.android.quickstep.views.RecentsView.RUNNING_TASK_ATTACH_ALPHA; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION; import android.animation.Animator; Loading Loading @@ -187,8 +189,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T * @param attached Whether to show RecentsView alongside the app window. If false, recents * will be hidden by some property we can animate, e.g. alpha. * @param animate Whether to animate recents to/from its new attached state. * @param updateRunningTaskAlpha Whether to update the running task's attached alpha */ default void setRecentsAttachedToAppWindow(boolean attached, boolean animate) { } default void setRecentsAttachedToAppWindow( boolean attached, boolean animate, boolean updateRunningTaskAlpha) { } default boolean isRecentsAttachedToAppWindow() { return false; Loading Loading @@ -253,12 +257,14 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T // (because we set the animation as the current state animation), so we reapply the // attached state here as well to ensure recents is shown/hidden appropriately. if (DisplayController.getNavigationMode(mActivity) == NavigationMode.NO_BUTTON) { setRecentsAttachedToAppWindow(mIsAttachedToWindow, false); setRecentsAttachedToAppWindow( mIsAttachedToWindow, false, recentsView.shouldUpdateRunningTaskAlpha()); } } @Override public void setRecentsAttachedToAppWindow(boolean attached, boolean animate) { public void setRecentsAttachedToAppWindow( boolean attached, boolean animate, boolean updateRunningTaskAlpha) { if (mIsAttachedToWindow == attached && animate) { return; } Loading @@ -266,6 +272,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T .cancelStateElementAnimation(INDEX_RECENTS_FADE_ANIM); mActivity.getStateManager() .cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM); if (updateRunningTaskAlpha) { mActivity.getStateManager() .cancelStateElementAnimation(INDEX_RECENTS_ATTACHED_ALPHA_ANIM); } AnimatorSet animatorSet = new AnimatorSet(); animatorSet.addListener(new AnimatorListenerAdapter() { Loading @@ -280,19 +290,28 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T long animationDuration = animate ? RECENTS_ATTACH_DURATION : 0; Animator fadeAnim = mActivity.getStateManager() .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1 : 0); .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1f : 0f); fadeAnim.setInterpolator(attached ? INSTANT : ACCELERATE_2); fadeAnim.setDuration(animationDuration); animatorSet.play(fadeAnim); float fromTranslation = ADJACENT_PAGE_HORIZONTAL_OFFSET.get( mActivity.getOverviewPanel()); float toTranslation = attached ? 0 : 1; float toTranslation = attached ? 0f : 1f; Animator translationAnimator = mActivity.getStateManager().createStateElementAnimation( INDEX_RECENTS_TRANSLATE_X_ANIM, fromTranslation, toTranslation); translationAnimator.setDuration(animationDuration); animatorSet.play(translationAnimator); if (updateRunningTaskAlpha) { float fromAlpha = RUNNING_TASK_ATTACH_ALPHA.get(mActivity.getOverviewPanel()); float toAlpha = attached ? 1f : 0f; Animator runningTaskAttachAlphaAnimator = mActivity.getStateManager() .createStateElementAnimation( INDEX_RECENTS_ATTACHED_ALPHA_ANIM, fromAlpha, toAlpha); runningTaskAttachAlphaAnimator.setDuration(animationDuration); animatorSet.play(runningTaskAttachAlphaAnimator); } animatorSet.start(); } Loading quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java +7 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.quickstep.util; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.RUNNING_TASK_ATTACH_ALPHA; import android.animation.Animator; import android.animation.ObjectAnimator; Loading @@ -33,8 +34,10 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi public static final int INDEX_RECENTS_FADE_ANIM = AtomicAnimationFactory.NEXT_INDEX + 0; public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = AtomicAnimationFactory.NEXT_INDEX + 1; public static final int INDEX_RECENTS_ATTACHED_ALPHA_ANIM = AtomicAnimationFactory.NEXT_INDEX + 2; private static final int MY_ANIM_COUNT = 2; private static final int MY_ANIM_COUNT = 3; protected final CONTAINER mContainer; Loading @@ -50,6 +53,7 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi ObjectAnimator alpha = ObjectAnimator.ofFloat(mContainer.getOverviewPanel(), RecentsView.CONTENT_ALPHA, values); return alpha; case INDEX_RECENTS_ATTACHED_ALPHA_ANIM: case INDEX_RECENTS_TRANSLATE_X_ANIM: { RecentsView rv = mContainer.getOverviewPanel(); return new SpringAnimationBuilder(mContainer) Loading @@ -57,7 +61,8 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi .setDampingRatio(0.8f) .setStiffness(250) .setValues(values) .build(rv, ADJACENT_PAGE_HORIZONTAL_OFFSET); .build(rv, index == INDEX_RECENTS_ATTACHED_ALPHA_ANIM ? RUNNING_TASK_ATTACH_ALPHA : ADJACENT_PAGE_HORIZONTAL_OFFSET); } default: return super.createStateElementAnimation(index, values); Loading quickstep/src/com/android/quickstep/views/RecentsView.java +41 −8 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU; import static com.android.launcher3.AbstractFloatingView.getTopOpenViewWithType; import static com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS; import static com.android.launcher3.Flags.enableAdditionalHomeAnimations; import static com.android.launcher3.Flags.enableDesktopTaskAlphaAnimation; import static com.android.launcher3.Flags.enableGridOnlyOverview; import static com.android.launcher3.Flags.enableLargeDesktopWindowingTile; import static com.android.launcher3.Flags.enableRefactorTaskThumbnail; Loading Loading @@ -320,6 +321,27 @@ public abstract class RecentsView< } }; public static final FloatProperty<RecentsView> RUNNING_TASK_ATTACH_ALPHA = new FloatProperty<RecentsView>("runningTaskAttachAlpha") { @Override public void setValue(RecentsView recentsView, float v) { TaskView runningTask = recentsView.getRunningTaskView(); if (runningTask == null) { return; } runningTask.setAttachAlpha(v); } @Override public Float get(RecentsView recentsView) { TaskView runningTask = recentsView.getRunningTaskView(); if (runningTask == null) { return null; } return runningTask.getAttachAlpha(); } }; public static final int SCROLL_VIBRATION_PRIMITIVE = Utilities.ATLEAST_S ? VibrationEffect.Composition.PRIMITIVE_LOW_TICK : -1; public static final float SCROLL_VIBRATION_PRIMITIVE_SCALE = 0.6f; Loading Loading @@ -2737,10 +2759,17 @@ public abstract class RecentsView< showCurrentTask(mActiveGestureRunningTasks); setEnableFreeScroll(false); setEnableDrawingLiveTile(false); setRunningTaskHidden(true); setRunningTaskHidden(!shouldUpdateRunningTaskAlpha()); setTaskIconScaledDown(true); } /** * Returns whether the running task's attach alpha should be updated during the attach animation */ public boolean shouldUpdateRunningTaskAlpha() { return enableDesktopTaskAlphaAnimation() && getRunningTaskView() instanceof DesktopTaskView; } private boolean isGestureActive() { return mActiveGestureRunningTasks != null; } Loading Loading @@ -3021,12 +3050,13 @@ public abstract class RecentsView< public void setRunningTaskHidden(boolean isHidden) { mRunningTaskTileHidden = isHidden; TaskView runningTask = getRunningTaskView(); if (runningTask != null) { if (runningTask == null) { return; } runningTask.setStableAlpha(isHidden ? 0 : mContentAlpha); if (!isHidden) { AccessibilityManagerCompat.sendCustomAccessibilityEvent(runningTask, AccessibilityEvent.TYPE_VIEW_FOCUSED, null); } AccessibilityManagerCompat.sendCustomAccessibilityEvent( runningTask, AccessibilityEvent.TYPE_VIEW_FOCUSED, null); } } Loading Loading @@ -4701,8 +4731,11 @@ public abstract class RecentsView< : showAsGrid ? gridOffsetSize : i < modalMidpoint ? modalLeftOffsetSize : modalRightOffsetSize; float totalTranslationX = translation + modalTranslation; View child = getChildAt(i); boolean skipTranslationOffset = enableDesktopTaskAlphaAnimation() && i == getRunningTaskIndex() && child instanceof DesktopTaskView; float totalTranslationX = (skipTranslationOffset ? 0f : translation) + modalTranslation; FloatProperty translationPropertyX = child instanceof TaskView ? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty() : getPagedOrientationHandler().getPrimaryViewTranslate(); Loading Loading
aconfig/launcher.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -339,3 +339,13 @@ flag { description: "Change fast scroller to a lettered list" bug: "358673724" } flag { name: "enable_desktop_task_alpha_animation" namespace: "launcher" description: "Enables the animation of the desktop task's background view" bug: "320307666" metadata { purpose: PURPOSE_BUGFIX } }
quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +14 −4 Original line number Diff line number Diff line Loading @@ -734,11 +734,18 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, } private void maybeUpdateRecentsAttachedState() { maybeUpdateRecentsAttachedState(true /* animate */); maybeUpdateRecentsAttachedState(/* animate= */ true); } protected void maybeUpdateRecentsAttachedState(boolean animate) { maybeUpdateRecentsAttachedState(animate, false /* moveRunningTask */); maybeUpdateRecentsAttachedState(animate, /* moveRunningTask= */ false); } protected void maybeUpdateRecentsAttachedState(boolean animate, boolean moveRunningTask) { maybeUpdateRecentsAttachedState( animate, moveRunningTask, mRecentsView != null && mRecentsView.shouldUpdateRunningTaskAlpha()); } /** Loading @@ -749,8 +756,10 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, * Note this method has no effect unless the navigation mode is NO_BUTTON. * @param animate whether to animate when attaching RecentsView * @param moveRunningTask whether to move running task to front when attaching * @param updateRunningTaskAlpha Whether to update the running task's attached alpha */ private void maybeUpdateRecentsAttachedState(boolean animate, boolean moveRunningTask) { private void maybeUpdateRecentsAttachedState( boolean animate, boolean moveRunningTask, boolean updateRunningTaskAlpha) { if ((!mDeviceState.isFullyGesturalNavMode() && !mGestureState.isTrackpadGesture()) || mRecentsView == null) { return; Loading Loading @@ -781,7 +790,8 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer, // TaskView jumping to new position as we move the tasks. mRecentsView.moveRunningTaskToFront(); } mAnimationFactory.setRecentsAttachedToAppWindow(recentsAttachedToAppWindow, animate); mAnimationFactory.setRecentsAttachedToAppWindow( recentsAttachedToAppWindow, animate, updateRunningTaskAlpha); // Reapply window transform throughout the attach animation, as the animation affects how // much the window is bound by overscroll (vs moving freely). Loading
quickstep/src/com/android/quickstep/BaseActivityInterface.java +25 −6 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ import static com.android.app.animation.Interpolators.LINEAR; import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION; import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_ATTACHED_ALPHA_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; import static com.android.quickstep.views.RecentsView.RUNNING_TASK_ATTACH_ALPHA; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION; import android.animation.Animator; Loading Loading @@ -187,8 +189,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T * @param attached Whether to show RecentsView alongside the app window. If false, recents * will be hidden by some property we can animate, e.g. alpha. * @param animate Whether to animate recents to/from its new attached state. * @param updateRunningTaskAlpha Whether to update the running task's attached alpha */ default void setRecentsAttachedToAppWindow(boolean attached, boolean animate) { } default void setRecentsAttachedToAppWindow( boolean attached, boolean animate, boolean updateRunningTaskAlpha) { } default boolean isRecentsAttachedToAppWindow() { return false; Loading Loading @@ -253,12 +257,14 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T // (because we set the animation as the current state animation), so we reapply the // attached state here as well to ensure recents is shown/hidden appropriately. if (DisplayController.getNavigationMode(mActivity) == NavigationMode.NO_BUTTON) { setRecentsAttachedToAppWindow(mIsAttachedToWindow, false); setRecentsAttachedToAppWindow( mIsAttachedToWindow, false, recentsView.shouldUpdateRunningTaskAlpha()); } } @Override public void setRecentsAttachedToAppWindow(boolean attached, boolean animate) { public void setRecentsAttachedToAppWindow( boolean attached, boolean animate, boolean updateRunningTaskAlpha) { if (mIsAttachedToWindow == attached && animate) { return; } Loading @@ -266,6 +272,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T .cancelStateElementAnimation(INDEX_RECENTS_FADE_ANIM); mActivity.getStateManager() .cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM); if (updateRunningTaskAlpha) { mActivity.getStateManager() .cancelStateElementAnimation(INDEX_RECENTS_ATTACHED_ALPHA_ANIM); } AnimatorSet animatorSet = new AnimatorSet(); animatorSet.addListener(new AnimatorListenerAdapter() { Loading @@ -280,19 +290,28 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T long animationDuration = animate ? RECENTS_ATTACH_DURATION : 0; Animator fadeAnim = mActivity.getStateManager() .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1 : 0); .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1f : 0f); fadeAnim.setInterpolator(attached ? INSTANT : ACCELERATE_2); fadeAnim.setDuration(animationDuration); animatorSet.play(fadeAnim); float fromTranslation = ADJACENT_PAGE_HORIZONTAL_OFFSET.get( mActivity.getOverviewPanel()); float toTranslation = attached ? 0 : 1; float toTranslation = attached ? 0f : 1f; Animator translationAnimator = mActivity.getStateManager().createStateElementAnimation( INDEX_RECENTS_TRANSLATE_X_ANIM, fromTranslation, toTranslation); translationAnimator.setDuration(animationDuration); animatorSet.play(translationAnimator); if (updateRunningTaskAlpha) { float fromAlpha = RUNNING_TASK_ATTACH_ALPHA.get(mActivity.getOverviewPanel()); float toAlpha = attached ? 1f : 0f; Animator runningTaskAttachAlphaAnimator = mActivity.getStateManager() .createStateElementAnimation( INDEX_RECENTS_ATTACHED_ALPHA_ANIM, fromAlpha, toAlpha); runningTaskAttachAlphaAnimator.setDuration(animationDuration); animatorSet.play(runningTaskAttachAlphaAnimator); } animatorSet.start(); } Loading
quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java +7 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.quickstep.util; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.RUNNING_TASK_ATTACH_ALPHA; import android.animation.Animator; import android.animation.ObjectAnimator; Loading @@ -33,8 +34,10 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi public static final int INDEX_RECENTS_FADE_ANIM = AtomicAnimationFactory.NEXT_INDEX + 0; public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = AtomicAnimationFactory.NEXT_INDEX + 1; public static final int INDEX_RECENTS_ATTACHED_ALPHA_ANIM = AtomicAnimationFactory.NEXT_INDEX + 2; private static final int MY_ANIM_COUNT = 2; private static final int MY_ANIM_COUNT = 3; protected final CONTAINER mContainer; Loading @@ -50,6 +53,7 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi ObjectAnimator alpha = ObjectAnimator.ofFloat(mContainer.getOverviewPanel(), RecentsView.CONTENT_ALPHA, values); return alpha; case INDEX_RECENTS_ATTACHED_ALPHA_ANIM: case INDEX_RECENTS_TRANSLATE_X_ANIM: { RecentsView rv = mContainer.getOverviewPanel(); return new SpringAnimationBuilder(mContainer) Loading @@ -57,7 +61,8 @@ public class RecentsAtomicAnimationFactory<CONTAINER extends Context & RecentsVi .setDampingRatio(0.8f) .setStiffness(250) .setValues(values) .build(rv, ADJACENT_PAGE_HORIZONTAL_OFFSET); .build(rv, index == INDEX_RECENTS_ATTACHED_ALPHA_ANIM ? RUNNING_TASK_ATTACH_ALPHA : ADJACENT_PAGE_HORIZONTAL_OFFSET); } default: return super.createStateElementAnimation(index, values); Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +41 −8 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU; import static com.android.launcher3.AbstractFloatingView.getTopOpenViewWithType; import static com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS; import static com.android.launcher3.Flags.enableAdditionalHomeAnimations; import static com.android.launcher3.Flags.enableDesktopTaskAlphaAnimation; import static com.android.launcher3.Flags.enableGridOnlyOverview; import static com.android.launcher3.Flags.enableLargeDesktopWindowingTile; import static com.android.launcher3.Flags.enableRefactorTaskThumbnail; Loading Loading @@ -320,6 +321,27 @@ public abstract class RecentsView< } }; public static final FloatProperty<RecentsView> RUNNING_TASK_ATTACH_ALPHA = new FloatProperty<RecentsView>("runningTaskAttachAlpha") { @Override public void setValue(RecentsView recentsView, float v) { TaskView runningTask = recentsView.getRunningTaskView(); if (runningTask == null) { return; } runningTask.setAttachAlpha(v); } @Override public Float get(RecentsView recentsView) { TaskView runningTask = recentsView.getRunningTaskView(); if (runningTask == null) { return null; } return runningTask.getAttachAlpha(); } }; public static final int SCROLL_VIBRATION_PRIMITIVE = Utilities.ATLEAST_S ? VibrationEffect.Composition.PRIMITIVE_LOW_TICK : -1; public static final float SCROLL_VIBRATION_PRIMITIVE_SCALE = 0.6f; Loading Loading @@ -2737,10 +2759,17 @@ public abstract class RecentsView< showCurrentTask(mActiveGestureRunningTasks); setEnableFreeScroll(false); setEnableDrawingLiveTile(false); setRunningTaskHidden(true); setRunningTaskHidden(!shouldUpdateRunningTaskAlpha()); setTaskIconScaledDown(true); } /** * Returns whether the running task's attach alpha should be updated during the attach animation */ public boolean shouldUpdateRunningTaskAlpha() { return enableDesktopTaskAlphaAnimation() && getRunningTaskView() instanceof DesktopTaskView; } private boolean isGestureActive() { return mActiveGestureRunningTasks != null; } Loading Loading @@ -3021,12 +3050,13 @@ public abstract class RecentsView< public void setRunningTaskHidden(boolean isHidden) { mRunningTaskTileHidden = isHidden; TaskView runningTask = getRunningTaskView(); if (runningTask != null) { if (runningTask == null) { return; } runningTask.setStableAlpha(isHidden ? 0 : mContentAlpha); if (!isHidden) { AccessibilityManagerCompat.sendCustomAccessibilityEvent(runningTask, AccessibilityEvent.TYPE_VIEW_FOCUSED, null); } AccessibilityManagerCompat.sendCustomAccessibilityEvent( runningTask, AccessibilityEvent.TYPE_VIEW_FOCUSED, null); } } Loading Loading @@ -4701,8 +4731,11 @@ public abstract class RecentsView< : showAsGrid ? gridOffsetSize : i < modalMidpoint ? modalLeftOffsetSize : modalRightOffsetSize; float totalTranslationX = translation + modalTranslation; View child = getChildAt(i); boolean skipTranslationOffset = enableDesktopTaskAlphaAnimation() && i == getRunningTaskIndex() && child instanceof DesktopTaskView; float totalTranslationX = (skipTranslationOffset ? 0f : translation) + modalTranslation; FloatProperty translationPropertyX = child instanceof TaskView ? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty() : getPagedOrientationHandler().getPrimaryViewTranslate(); Loading