Merge "Using IconLoader lib to load splashscreen icons" into sc-dev

This commit is contained in:
Sunny Goyal
2021-03-26 16:41:57 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 5 deletions

View File

@@ -17,11 +17,13 @@
package com.android.wm.shell.startingsurface;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.os.UserHandle.getUserHandleForUid;
import android.annotation.ColorInt;
import android.annotation.NonNull;
import android.app.ActivityThread;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
@@ -42,6 +44,7 @@ import com.android.internal.R;
import com.android.internal.graphics.palette.Palette;
import com.android.internal.graphics.palette.Quantizer;
import com.android.internal.graphics.palette.VariationalKMeansQuantizer;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.common.TransactionPool;
import java.util.List;
@@ -62,6 +65,7 @@ public class SplashscreenContentDrawer {
// also 108*108 pixels, then do not enlarge this icon if only need to show foreground icon.
private static final float ENLARGE_FOREGROUND_ICON_THRESHOLD = (72f * 72f) / (108f * 108f);
private final Context mContext;
private final IconProvider mIconProvider;
private final int mMaxAnimatableIconDuration;
private int mIconSize;
@@ -78,6 +82,7 @@ public class SplashscreenContentDrawer {
SplashscreenContentDrawer(Context context, int maxAnimatableIconDuration,
int iconExitAnimDuration, int appRevealAnimDuration, TransactionPool pool) {
mContext = context;
mIconProvider = new IconProvider(context);
mMaxAnimatableIconDuration = maxAnimatableIconDuration;
mAppRevealDuration = appRevealAnimDuration;
mIconExitDuration = iconExitAnimDuration;
@@ -141,20 +146,23 @@ public class SplashscreenContentDrawer {
}
}
SplashScreenView makeSplashScreenContentView(Context context, int iconRes) {
SplashScreenView makeSplashScreenContentView(Context context, ActivityInfo ai) {
updateDensity();
getWindowAttrs(context, mTmpAttrs);
final StartingWindowViewBuilder builder = new StartingWindowViewBuilder();
final int animationDuration;
final Drawable iconDrawable;
Drawable iconDrawable;
if (mTmpAttrs.mReplaceIcon != null) {
iconDrawable = mTmpAttrs.mReplaceIcon;
animationDuration = Math.max(0,
Math.min(mTmpAttrs.mAnimationDuration, mMaxAnimatableIconDuration));
} else {
iconDrawable = iconRes != 0 ? context.getDrawable(iconRes)
: context.getPackageManager().getDefaultActivityIcon();
iconDrawable = mIconProvider.getIconForUI(
ai, getUserHandleForUid(ai.applicationInfo.uid));
if (iconDrawable == null) {
iconDrawable = context.getPackageManager().getDefaultActivityIcon();
}
animationDuration = 0;
}
final int themeBGColor = peekWindowBGColor(context);

View File

@@ -270,7 +270,8 @@ public class StartingSurfaceDrawer {
if (splashscreenContentCompatible) {
win.setContentView(sView);
} else {
sView = mSplashscreenContentDrawer.makeSplashScreenContentView(context, iconRes);
sView = mSplashscreenContentDrawer
.makeSplashScreenContentView(context, activityInfo);
win.setContentView(sView);
sView.cacheRootWindow(win);
}