From c0780644503c97e4d21f855d9a7b25c786cc02ee Mon Sep 17 00:00:00 2001 From: Pat Manning Date: Tue, 21 Nov 2023 15:38:07 +0000 Subject: [PATCH] Do not hide icon app chip menu when resetting color tint. Fix: 312372713 Test: Manual. Flag: ACONFIG com.android.launcher3.enable_overview_icon_menu TEAMFOOD Change-Id: Iab860eb7e69ddb47913b01040ca706a8d829abe6 --- .../quickstep/views/FloatingTaskView.java | 2 +- .../quickstep/views/GroupedTaskView.java | 2 +- .../quickstep/views/IconAppChipView.java | 17 ++++++++++++++++- .../com/android/quickstep/views/IconView.java | 5 +++++ .../com/android/quickstep/views/TaskView.java | 4 ++-- .../android/quickstep/views/TaskViewIcon.java | 2 +- 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java index 92ffcd0454..efc0a35ffe 100644 --- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java +++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java @@ -319,7 +319,7 @@ public class FloatingTaskView extends FrameLayout { // Fade in the placeholder view during Normal > OverviewSplitSelect if (mSplitPlaceholderView.getAlpha() == 0) { - mSplitPlaceholderView.getIconView().setAlpha(0); + mSplitPlaceholderView.getIconView().setContentAlpha(0); fadeInSplitPlaceholder(animation, timings); } diff --git a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java index 8559b37537..dd201af92f 100644 --- a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java +++ b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java @@ -436,7 +436,7 @@ public class GroupedTaskView extends TaskView { super.setIconsAndBannersTransitionProgress(progress, invert); // Value set by super call float scale = mIconView.getAlpha(); - mIconView2.setAlpha(scale); + mIconView2.setContentAlpha(scale); mDigitalWellBeingToast2.updateBannerOffset(1f - scale); } diff --git a/quickstep/src/com/android/quickstep/views/IconAppChipView.java b/quickstep/src/com/android/quickstep/views/IconAppChipView.java index b14b917a5b..ee09c4dedd 100644 --- a/quickstep/src/com/android/quickstep/views/IconAppChipView.java +++ b/quickstep/src/com/android/quickstep/views/IconAppChipView.java @@ -40,6 +40,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.touch.PagedOrientationHandler; +import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.views.ActivityContext; import com.android.quickstep.util.RecentsOrientedState; @@ -51,6 +52,12 @@ public class IconAppChipView extends FrameLayout implements TaskViewIcon { private static final int MENU_BACKGROUND_REVEAL_DURATION = 417; private static final int MENU_BACKGROUND_HIDE_DURATION = 333; + private static final int NUM_ALPHA_CHANNELS = 2; + private static final int INDEX_CONTENT_ALPHA = 0; + private static final int INDEX_COLOR_FILTER_ALPHA = 1; + + private final MultiValueAlpha mMultiValueAlpha; + private IconView mIconView; // Two textview so we can ellipsize the collapsed view and crossfade on expand to the full name. private TextView mIconTextCollapsedView; @@ -98,6 +105,8 @@ public class IconAppChipView extends FrameLayout implements TaskViewIcon { int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); Resources res = getResources(); + mMultiValueAlpha = new MultiValueAlpha(this, NUM_ALPHA_CHANNELS); + mMultiValueAlpha.setUpdateVisibility(/* updateVisibility= */ true); // Menu dimensions mMaxMenuWidth = res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_menu_max_width); @@ -286,7 +295,13 @@ public class IconAppChipView extends FrameLayout implements TaskViewIcon { @Override public void setIconColorTint(int color, float amount) { // RecentsView's COLOR_TINT animates between 0 and 0.5f, we want to hide the app chip menu. - setAlpha(Utilities.mapToRange(amount, 0f, 0.5f, 1f, 0f, LINEAR)); + float colorTintAlpha = Utilities.mapToRange(amount, 0f, 0.5f, 1f, 0f, LINEAR); + mMultiValueAlpha.get(INDEX_COLOR_FILTER_ALPHA).setValue(colorTintAlpha); + } + + @Override + public void setContentAlpha(float alpha) { + mMultiValueAlpha.get(INDEX_CONTENT_ALPHA).setValue(alpha); } @Override diff --git a/quickstep/src/com/android/quickstep/views/IconView.java b/quickstep/src/com/android/quickstep/views/IconView.java index 64caba742a..a4bda7f267 100644 --- a/quickstep/src/com/android/quickstep/views/IconView.java +++ b/quickstep/src/com/android/quickstep/views/IconView.java @@ -143,6 +143,11 @@ public class IconView extends View implements TaskViewIcon { return false; } + @Override + public void setContentAlpha(float alpha) { + setAlpha(alpha); + } + @Override public void setAlpha(float alpha) { super.setAlpha(alpha); diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index ab51a70942..49eda8f258 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -630,7 +630,7 @@ public class TaskView extends FrameLayout implements Reusable { return; } mModalness = modalness; - mIconView.setAlpha(1 - modalness); + mIconView.setContentAlpha(1 - modalness); mDigitalWellBeingToast.updateBannerOffset(modalness); } @@ -1253,7 +1253,7 @@ public class TaskView extends FrameLayout implements Reusable { float upperClamp = invert ? 1 : iconScalePercentage; float scale = Interpolators.clampToProgress(FAST_OUT_SLOW_IN, lowerClamp, upperClamp) .getInterpolation(progress); - mIconView.setAlpha(scale); + mIconView.setContentAlpha(scale); mDigitalWellBeingToast.updateBannerOffset(1f - scale); } diff --git a/quickstep/src/com/android/quickstep/views/TaskViewIcon.java b/quickstep/src/com/android/quickstep/views/TaskViewIcon.java index b4f21bef7b..4e82725d98 100644 --- a/quickstep/src/com/android/quickstep/views/TaskViewIcon.java +++ b/quickstep/src/com/android/quickstep/views/TaskViewIcon.java @@ -40,7 +40,7 @@ public interface TaskViewIcon { /** * Sets the opacity of the view. */ - void setAlpha(float alpha); + void setContentAlpha(float alpha); /** * Returns this icon view's drawable.