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

This commit is contained in:
Jon Miranda 2021-12-10 23:20:42 +00:00 committed by Android (Google) Code Review
commit b788f9f7f7
1 changed files with 20 additions and 4 deletions

View File

@ -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;