Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae975a61 authored by Jon Miranda's avatar Jon Miranda
Browse files

Swipe up to home into FolderIcon animation bug fixes.

- Fixes clipping issues.
- Fixes badge being shifted.

Bug: 124510042
Change-Id: I2520d963fb2041a049650c2b8c12ddb3de7b8d87
parent 0de59396
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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;
    }
+24 −19
Original line number Diff line number Diff line
@@ -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);
                    }