Loading quickstep/libs/sysui_shared.jar +121 B (115 KiB) File changed.No diff preview for this file type. View original file View changed file quickstep/src/com/android/quickstep/NormalizedIconLoader.java +10 −6 Original line number Diff line number Diff line Loading @@ -16,13 +16,13 @@ package com.android.quickstep; import android.annotation.TargetApi; import android.app.ActivityManager.TaskDescription; import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.UserHandle; import android.util.LruCache; import android.util.SparseArray; Loading Loading @@ -56,7 +56,7 @@ public class NormalizedIconLoader extends IconLoader { BitmapInfo info = mDefaultIcons.get(userId); if (info == null) { info = getBitmapInfo(Resources.getSystem() .getDrawable(android.R.drawable.sym_def_app_icon), userId, false); .getDrawable(android.R.drawable.sym_def_app_icon), userId, 0, false); mDefaultIcons.put(userId, info); } Loading @@ -65,26 +65,30 @@ public class NormalizedIconLoader extends IconLoader { } @Override protected Drawable createBadgedDrawable(Drawable drawable, int userId) { return new FastBitmapDrawable(getBitmapInfo(drawable, userId, false)); protected Drawable createBadgedDrawable(Drawable drawable, int userId, TaskDescription desc) { return new FastBitmapDrawable(getBitmapInfo(drawable, userId, desc.getPrimaryColor(), false)); } private synchronized BitmapInfo getBitmapInfo(Drawable drawable, int userId, boolean isInstantApp) { int primaryColor, boolean isInstantApp) { if (mLauncherIcons == null) { mLauncherIcons = LauncherIcons.obtain(mContext); } mLauncherIcons.setWrapperBackgroundColor(primaryColor); // User version code O, so that the icon is always wrapped in an adaptive icon container. return mLauncherIcons.createBadgedIconBitmap(drawable, UserHandle.of(userId), Build.VERSION_CODES.O, isInstantApp); } @Override protected synchronized Drawable getBadgedActivityIcon(ActivityInfo activityInfo, int userId) { protected Drawable getBadgedActivityIcon(ActivityInfo activityInfo, int userId, TaskDescription desc) { BitmapInfo bitmapInfo = getBitmapInfo( activityInfo.loadUnbadgedIcon(mContext.getPackageManager()), userId, desc.getPrimaryColor(), activityInfo.applicationInfo.isInstantApp()); return mDrawableFactory.newIcon(bitmapInfo, activityInfo); } Loading src/com/android/launcher3/graphics/LauncherIcons.java +18 −0 Original line number Diff line number Diff line Loading @@ -29,11 +29,13 @@ import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PaintFlagsDrawFilter; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.PaintDrawable; import android.os.Build; Loading @@ -60,6 +62,8 @@ import com.android.launcher3.util.Themes; */ public class LauncherIcons implements AutoCloseable { private static final int DEFAULT_WRAPPER_BACKGROUND = Color.WHITE; public static final Object sPoolSync = new Object(); private static LauncherIcons sPool; Loading @@ -84,6 +88,9 @@ public class LauncherIcons implements AutoCloseable { */ public void recycle() { synchronized (sPoolSync) { // Clear any temporary state variables mWrapperBackgroundColor = DEFAULT_WRAPPER_BACKGROUND; next = sPool; sPool = this; } Loading @@ -104,7 +111,9 @@ public class LauncherIcons implements AutoCloseable { private IconNormalizer mNormalizer; private ShadowGenerator mShadowGenerator; private Drawable mWrapperIcon; private int mWrapperBackgroundColor = DEFAULT_WRAPPER_BACKGROUND; // sometimes we store linked lists of these things private LauncherIcons next; Loading Loading @@ -222,6 +231,13 @@ public class LauncherIcons implements AutoCloseable { Math.min(scale[0], ShadowGenerator.getScaleForBounds(iconBounds))); } /** * Sets the background color used for wrapped adaptive icon */ public void setWrapperBackgroundColor(int color) { mWrapperBackgroundColor = (Color.alpha(color) < 255) ? DEFAULT_WRAPPER_BACKGROUND : color; } private Drawable normalizeAndWrapToAdaptiveIcon(Drawable icon, int iconAppTargetSdk, RectF outIconBounds, float[] outScale) { float scale = 1f; Loading @@ -240,6 +256,8 @@ public class LauncherIcons implements AutoCloseable { fsd.setScale(scale); icon = dr; scale = getNormalizer().getScale(icon, outIconBounds, null, null); ((ColorDrawable) dr.getBackground()).setColor(mWrapperBackgroundColor); } } else { scale = getNormalizer().getScale(icon, outIconBounds, null, null); Loading Loading
quickstep/libs/sysui_shared.jar +121 B (115 KiB) File changed.No diff preview for this file type. View original file View changed file
quickstep/src/com/android/quickstep/NormalizedIconLoader.java +10 −6 Original line number Diff line number Diff line Loading @@ -16,13 +16,13 @@ package com.android.quickstep; import android.annotation.TargetApi; import android.app.ActivityManager.TaskDescription; import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.UserHandle; import android.util.LruCache; import android.util.SparseArray; Loading Loading @@ -56,7 +56,7 @@ public class NormalizedIconLoader extends IconLoader { BitmapInfo info = mDefaultIcons.get(userId); if (info == null) { info = getBitmapInfo(Resources.getSystem() .getDrawable(android.R.drawable.sym_def_app_icon), userId, false); .getDrawable(android.R.drawable.sym_def_app_icon), userId, 0, false); mDefaultIcons.put(userId, info); } Loading @@ -65,26 +65,30 @@ public class NormalizedIconLoader extends IconLoader { } @Override protected Drawable createBadgedDrawable(Drawable drawable, int userId) { return new FastBitmapDrawable(getBitmapInfo(drawable, userId, false)); protected Drawable createBadgedDrawable(Drawable drawable, int userId, TaskDescription desc) { return new FastBitmapDrawable(getBitmapInfo(drawable, userId, desc.getPrimaryColor(), false)); } private synchronized BitmapInfo getBitmapInfo(Drawable drawable, int userId, boolean isInstantApp) { int primaryColor, boolean isInstantApp) { if (mLauncherIcons == null) { mLauncherIcons = LauncherIcons.obtain(mContext); } mLauncherIcons.setWrapperBackgroundColor(primaryColor); // User version code O, so that the icon is always wrapped in an adaptive icon container. return mLauncherIcons.createBadgedIconBitmap(drawable, UserHandle.of(userId), Build.VERSION_CODES.O, isInstantApp); } @Override protected synchronized Drawable getBadgedActivityIcon(ActivityInfo activityInfo, int userId) { protected Drawable getBadgedActivityIcon(ActivityInfo activityInfo, int userId, TaskDescription desc) { BitmapInfo bitmapInfo = getBitmapInfo( activityInfo.loadUnbadgedIcon(mContext.getPackageManager()), userId, desc.getPrimaryColor(), activityInfo.applicationInfo.isInstantApp()); return mDrawableFactory.newIcon(bitmapInfo, activityInfo); } Loading
src/com/android/launcher3/graphics/LauncherIcons.java +18 −0 Original line number Diff line number Diff line Loading @@ -29,11 +29,13 @@ import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PaintFlagsDrawFilter; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.PaintDrawable; import android.os.Build; Loading @@ -60,6 +62,8 @@ import com.android.launcher3.util.Themes; */ public class LauncherIcons implements AutoCloseable { private static final int DEFAULT_WRAPPER_BACKGROUND = Color.WHITE; public static final Object sPoolSync = new Object(); private static LauncherIcons sPool; Loading @@ -84,6 +88,9 @@ public class LauncherIcons implements AutoCloseable { */ public void recycle() { synchronized (sPoolSync) { // Clear any temporary state variables mWrapperBackgroundColor = DEFAULT_WRAPPER_BACKGROUND; next = sPool; sPool = this; } Loading @@ -104,7 +111,9 @@ public class LauncherIcons implements AutoCloseable { private IconNormalizer mNormalizer; private ShadowGenerator mShadowGenerator; private Drawable mWrapperIcon; private int mWrapperBackgroundColor = DEFAULT_WRAPPER_BACKGROUND; // sometimes we store linked lists of these things private LauncherIcons next; Loading Loading @@ -222,6 +231,13 @@ public class LauncherIcons implements AutoCloseable { Math.min(scale[0], ShadowGenerator.getScaleForBounds(iconBounds))); } /** * Sets the background color used for wrapped adaptive icon */ public void setWrapperBackgroundColor(int color) { mWrapperBackgroundColor = (Color.alpha(color) < 255) ? DEFAULT_WRAPPER_BACKGROUND : color; } private Drawable normalizeAndWrapToAdaptiveIcon(Drawable icon, int iconAppTargetSdk, RectF outIconBounds, float[] outScale) { float scale = 1f; Loading @@ -240,6 +256,8 @@ public class LauncherIcons implements AutoCloseable { fsd.setScale(scale); icon = dr; scale = getNormalizer().getScale(icon, outIconBounds, null, null); ((ColorDrawable) dr.getBackground()).setColor(mWrapperBackgroundColor); } } else { scale = getNormalizer().getScale(icon, outIconBounds, null, null); Loading