From 9d41499a3306dbf179b008c6761c3358d7f21003 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Tue, 15 Jun 2021 12:55:20 -0700 Subject: [PATCH] Fix bug where preview item icon fades/disappears for a frame during - Remove fade since we no longer clip icons. - Ensures a clean handoff between drag view and folder icon preview item. Bug: 175329686 Test: create folder / add items to folder Change-Id: Iaab592410734b0b5239dbbddbb9b2ed5a9f5d8b0 --- .../folder/ClippedFolderIconLayoutRule.java | 4 +--- .../launcher3/folder/FolderAnimationManager.java | 2 +- src/com/android/launcher3/folder/FolderIcon.java | 13 +++++++------ .../launcher3/folder/FolderPreviewItemAnim.java | 2 +- .../launcher3/folder/PreviewItemDrawingParams.java | 4 +--- .../launcher3/folder/PreviewItemManager.java | 2 +- 6 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/folder/ClippedFolderIconLayoutRule.java b/src/com/android/launcher3/folder/ClippedFolderIconLayoutRule.java index 3457804c3a..54967a9915 100644 --- a/src/com/android/launcher3/folder/ClippedFolderIconLayoutRule.java +++ b/src/com/android/launcher3/folder/ClippedFolderIconLayoutRule.java @@ -34,7 +34,6 @@ public class ClippedFolderIconLayoutRule { float totalScale = scaleForItem(curNumItems); float transX; float transY; - float overlayAlpha = 0; if (index == EXIT_INDEX) { // 0 1 * <-- Exit position (row 0, col 2) @@ -55,10 +54,9 @@ public class ClippedFolderIconLayoutRule { transY = mTmpPoint[1]; if (params == null) { - params = new PreviewItemDrawingParams(transX, transY, totalScale, overlayAlpha); + params = new PreviewItemDrawingParams(transX, transY, totalScale); } else { params.update(transX, transY, totalScale); - params.overlayAlpha = overlayAlpha; } return params; } diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java index 57b289ec34..4fe85be820 100644 --- a/src/com/android/launcher3/folder/FolderAnimationManager.java +++ b/src/com/android/launcher3/folder/FolderAnimationManager.java @@ -79,7 +79,7 @@ public class FolderAnimationManager { private final TimeInterpolator mLargeFolderPreviewItemOpenInterpolator; private final TimeInterpolator mLargeFolderPreviewItemCloseInterpolator; - private final PreviewItemDrawingParams mTmpParams = new PreviewItemDrawingParams(0, 0, 0, 0); + private final PreviewItemDrawingParams mTmpParams = new PreviewItemDrawingParams(0, 0, 0); private final FolderGridOrganizer mPreviewVerifier; private ObjectAnimator mBgColorAnimator; diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java index ed2d0a943a..5c11451535 100644 --- a/src/com/android/launcher3/folder/FolderIcon.java +++ b/src/com/android/launcher3/folder/FolderIcon.java @@ -113,7 +113,7 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel FolderGridOrganizer mPreviewVerifier; ClippedFolderIconLayoutRule mPreviewLayoutRule; private PreviewItemManager mPreviewItemManager; - private PreviewItemDrawingParams mTmpParams = new PreviewItemDrawingParams(0, 0, 0, 0); + private PreviewItemDrawingParams mTmpParams = new PreviewItemDrawingParams(0, 0, 0); private List mCurrentPreviewItems = new ArrayList<>(); boolean mAnimating = false; @@ -391,7 +391,7 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel to.offset(center[0] - animateView.getMeasuredWidth() / 2, center[1] - animateView.getMeasuredHeight() / 2); - float finalAlpha = index < MAX_NUM_ITEMS_IN_PREVIEW ? 0.5f : 0f; + float finalAlpha = index < MAX_NUM_ITEMS_IN_PREVIEW ? 1f : 0f; float finalScale = scale * scaleRelativeToDragLayer; @@ -402,15 +402,18 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel finalScale *= containerScale; } + final int finalIndex = index; dragLayer.animateView(animateView, from, to, finalAlpha, 1, 1, finalScale, finalScale, DROP_IN_ANIMATION_DURATION, Interpolators.DEACCEL_2, Interpolators.ACCEL_2, - null, DragLayer.ANIMATION_END_DISAPPEAR, null); + () -> { + mPreviewItemManager.hidePreviewItem(finalIndex, false); + mFolder.showItem(item); + }, DragLayer.ANIMATION_END_DISAPPEAR, null); mFolder.hideItem(item); if (!itemAdded) mPreviewItemManager.hidePreviewItem(index, true); - final int finalIndex = index; FolderNameInfos nameInfos = new FolderNameInfos(); if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) { @@ -430,8 +433,6 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel private void showFinalView(int finalIndex, final WorkspaceItemInfo item, FolderNameInfos nameInfos, InstanceId instanceId) { postDelayed(() -> { - mPreviewItemManager.hidePreviewItem(finalIndex, false); - mFolder.showItem(item); setLabelSuggestion(nameInfos, instanceId); invalidate(); }, DROP_IN_ANIMATION_DURATION); diff --git a/src/com/android/launcher3/folder/FolderPreviewItemAnim.java b/src/com/android/launcher3/folder/FolderPreviewItemAnim.java index edfd2ba35e..e20bafbde0 100644 --- a/src/com/android/launcher3/folder/FolderPreviewItemAnim.java +++ b/src/com/android/launcher3/folder/FolderPreviewItemAnim.java @@ -45,7 +45,7 @@ class FolderPreviewItemAnim { }; private static final PreviewItemDrawingParams sTmpParams = - new PreviewItemDrawingParams(0, 0, 0, 0); + new PreviewItemDrawingParams(0, 0, 0); private static final float[] sTempParamsArray = new float[3]; private final ObjectAnimator mAnimator; diff --git a/src/com/android/launcher3/folder/PreviewItemDrawingParams.java b/src/com/android/launcher3/folder/PreviewItemDrawingParams.java index 5746be89d9..58efdc12ce 100644 --- a/src/com/android/launcher3/folder/PreviewItemDrawingParams.java +++ b/src/com/android/launcher3/folder/PreviewItemDrawingParams.java @@ -27,17 +27,15 @@ class PreviewItemDrawingParams { float transX; float transY; float scale; - float overlayAlpha; public FolderPreviewItemAnim anim; public boolean hidden; public Drawable drawable; public WorkspaceItemInfo item; - PreviewItemDrawingParams(float transX, float transY, float scale, float overlayAlpha) { + PreviewItemDrawingParams(float transX, float transY, float scale) { this.transX = transX; this.transY = transY; this.scale = scale; - this.overlayAlpha = overlayAlpha; } public void update(float transX, float transY, float scale) { diff --git a/src/com/android/launcher3/folder/PreviewItemManager.java b/src/com/android/launcher3/folder/PreviewItemManager.java index baafbc92bc..a6674fcb08 100644 --- a/src/com/android/launcher3/folder/PreviewItemManager.java +++ b/src/com/android/launcher3/folder/PreviewItemManager.java @@ -260,7 +260,7 @@ public class PreviewItemManager { params.remove(params.size() - 1); } while (items.size() > params.size()) { - params.add(new PreviewItemDrawingParams(0, 0, 0, 0)); + params.add(new PreviewItemDrawingParams(0, 0, 0)); } int numItemsInFirstPagePreview = page == 0 ? items.size() : MAX_NUM_ITEMS_IN_PREVIEW;