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

Commit b788f9f7 authored by Jon Miranda's avatar Jon Miranda Committed by Android (Google) Code Review
Browse files

Merge "Display in-memory icon for app close while AdaptiveIcon loads." into sc-v2-dev

parents 0e0e1cef 0c2f0fae
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -88,7 +88,6 @@ public class FloatingIconView extends FrameLayout implements

    private IconLoadResult mIconLoadResult;

    // Draw the drawable of the BubbleTextView behind ClipIconView to reveal the built in shadow.
    private View mBtvDrawable;

    private ClipIconView mClipIconView;
@@ -349,10 +348,23 @@ public class FloatingIconView extends FrameLayout implements
            }
        }

        if (!mIsOpening && btvIcon != null) {
        setOriginalDrawableBackground(btvIcon);
        invalidate();
    }

    /**
     * Draws the drawable of the BubbleTextView behind ClipIconView
     *
     * This is used to:
     * - Have icon displayed while Adaptive Icon is loading
     * - Displays the built in shadow to ensure a clean handoff
     *
     * Allows nullable as this may be cleared when drawing is deferred to ClipIconView.
     */
    private void setOriginalDrawableBackground(@Nullable Drawable btvIcon) {
        if (!mIsOpening) {
            mBtvDrawable.setBackground(btvIcon);
        }
        invalidate();
    }

    /**
@@ -457,7 +469,9 @@ public class FloatingIconView extends FrameLayout implements

    @Override
    public void onAnimationStart(Animator animator) {
        if (mIconLoadResult != null && mIconLoadResult.isIconLoaded) {
        if ((mIconLoadResult != null && mIconLoadResult.isIconLoaded)
                || (!mIsOpening && mBtvDrawable.getBackground() != null)) {
            // No need to wait for icon load since we can display the BubbleTextView drawable.
            setVisibility(View.VISIBLE);
        }
        if (!mIsOpening && mOriginalIcon != null) {
@@ -520,6 +534,7 @@ public class FloatingIconView extends FrameLayout implements

        IconLoadResult result = new IconLoadResult(info,
                btvIcon == null ? false : btvIcon.isThemed());
        result.btvDrawable = btvIcon;

        final long fetchIconId = sFetchIconId++;
        MODEL_EXECUTOR.getHandler().postAtFrontOfQueue(() -> {
@@ -558,6 +573,7 @@ public class FloatingIconView extends FrameLayout implements
                view.mIconLoadResult = fetchIcon(launcher, originalView,
                        (ItemInfo) originalView.getTag(), isOpening);
            }
            view.setOriginalDrawableBackground(view.mIconLoadResult.btvDrawable);
        }
        sIconLoadResult = null;