diff options
author | Jon Miranda <jonmiranda@google.com> | 2019-05-20 11:10:25 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2019-05-20 11:10:25 -0700 |
commit | ae975a613d93811daf47cec8e29d39e932d9332d (patch) | |
tree | 1fcca98730a773856200c163dd274f0d44fe3787 | |
parent | 0de5939638d95f7f5111aaf1ee7927be19efd5e6 (diff) | |
download | android_packages_apps_Trebuchet-ae975a613d93811daf47cec8e29d39e932d9332d.tar.gz android_packages_apps_Trebuchet-ae975a613d93811daf47cec8e29d39e932d9332d.tar.bz2 android_packages_apps_Trebuchet-ae975a613d93811daf47cec8e29d39e932d9332d.zip |
Swipe up to home into FolderIcon animation bug fixes.
- Fixes clipping issues.
- Fixes badge being shifted.
Bug: 124510042
Change-Id: I2520d963fb2041a049650c2b8c12ddb3de7b8d87
-rw-r--r-- | src/com/android/launcher3/folder/FolderIcon.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/views/FloatingIconView.java | 43 |
2 files changed, 28 insertions, 19 deletions
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java index 8d9c52065..0a9bc722d 100644 --- a/src/com/android/launcher3/folder/FolderIcon.java +++ b/src/com/android/launcher3/folder/FolderIcon.java @@ -203,6 +203,10 @@ public class FolderIcon extends FrameLayout implements FolderListener { mBackground.getBounds(outBounds); } + public float getBackgroundStrokeWidth() { + return mBackground.getStrokeWidth(); + } + public Folder getFolder() { return mFolder; } diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java index e5c75c3fc..a9e8f1733 100644 --- a/src/com/android/launcher3/views/FloatingIconView.java +++ b/src/com/android/launcher3/views/FloatingIconView.java @@ -259,8 +259,6 @@ public class FloatingIconView extends View implements mFgSpringX.animateToFinalPosition(diffX); mFgSpringY.animateToFinalPosition(diffY); } - - } invalidate(); invalidateOutline(); @@ -368,10 +366,13 @@ public class FloatingIconView extends View implements drawable = v.getBackground(); } } else { + boolean isFolderIcon = v instanceof FolderIcon; + int width = isFolderIcon ? v.getWidth() : lp.width; + int height = isFolderIcon ? v.getHeight() : lp.height; if (supportsAdaptiveIcons) { - drawable = Utilities.getFullDrawable(mLauncher, info, lp.width, lp.height, - false, sTmpObjArray); - if ((drawable instanceof AdaptiveIconDrawable)) { + drawable = Utilities.getFullDrawable(mLauncher, info, width, height, false, + sTmpObjArray); + if (drawable instanceof AdaptiveIconDrawable) { mBadge = getBadge(mLauncher, info, sTmpObjArray[0]); } else { // The drawable we get back is not an adaptive icon, so we need to use the @@ -383,8 +384,8 @@ public class FloatingIconView extends View implements // Similar to DragView, we simply use the BubbleTextView icon here. drawable = btvIcon; } else { - drawable = Utilities.getFullDrawable(mLauncher, info, lp.width, lp.height, - false, sTmpObjArray); + drawable = Utilities.getFullDrawable(mLauncher, info, width, height, false, + sTmpObjArray); } } } @@ -412,13 +413,6 @@ public class FloatingIconView extends View implements } mForeground = foreground; - if (mForeground instanceof ShiftedBitmapDrawable && v instanceof FolderIcon) { - ShiftedBitmapDrawable sbd = (ShiftedBitmapDrawable) mForeground; - ((FolderIcon) v).getPreviewBounds(sTmpRect); - sbd.setShiftX(sbd.getShiftX() - sTmpRect.left); - sbd.setShiftY(sbd.getShiftY() - sTmpRect.top); - } - final int originalHeight = lp.height; final int originalWidth = lp.width; @@ -434,13 +428,25 @@ public class FloatingIconView extends View implements if (mBadge != null) { mBadge.setBounds(mStartRevealRect); - if (!isOpening) { + if (!isOpening && !isFolderIcon) { DRAWABLE_ALPHA.set(mBadge, 0); } - } - if (!isFolderIcon) { + if (isFolderIcon) { + ((FolderIcon) v).getPreviewBounds(sTmpRect); + float bgStroke = ((FolderIcon) v).getBackgroundStrokeWidth(); + if (mForeground instanceof ShiftedBitmapDrawable) { + ShiftedBitmapDrawable sbd = (ShiftedBitmapDrawable) mForeground; + sbd.setShiftX(sbd.getShiftX() - sTmpRect.left - bgStroke); + sbd.setShiftY(sbd.getShiftY() - sTmpRect.top - bgStroke); + } + if (mBadge instanceof ShiftedBitmapDrawable) { + ShiftedBitmapDrawable sbd = (ShiftedBitmapDrawable) mBadge; + sbd.setShiftX(sbd.getShiftX() - sTmpRect.left - bgStroke); + sbd.setShiftY(sbd.getShiftY() - sTmpRect.top - bgStroke); + } + } else { Utilities.scaleRectAboutCenter(mStartRevealRect, IconShape.getNormalizationScale()); } @@ -665,7 +671,7 @@ public class FloatingIconView extends View implements } }); - if (mBadge != null) { + if (mBadge != null && !(mOriginalIcon instanceof FolderIcon)) { ObjectAnimator badgeFade = ObjectAnimator.ofInt(mBadge, DRAWABLE_ALPHA, 255); badgeFade.addUpdateListener(valueAnimator -> invalidate()); fade.play(badgeFade); @@ -691,7 +697,6 @@ public class FloatingIconView extends View implements @Override public void onAnimationEnd(Animator animation) { folderIcon.setBackgroundVisible(true); - folderIcon.animateBgShadowAndStroke(); if (folderIcon.hasDot()) { folderIcon.animateDotScale(0, 1f); } |