Loading quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3.uioverrides; import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import android.animation.Animator; import android.animation.AnimatorSet; Loading Loading @@ -236,7 +237,7 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView { mSlotMachineIcons = new ArrayList<>(iconsToAnimate.size() + 2); mSlotMachineIcons.add(getIcon()); iconsToAnimate.stream() .map(iconInfo -> iconInfo.newThemedIcon(mContext)) .map(iconInfo -> iconInfo.newIcon(mContext, FLAG_THEMED)) .forEach(mSlotMachineIcons::add); if (endWithOriginalIcon) { mSlotMachineIcons.add(getIcon()); Loading quickstep/src/com/android/quickstep/TaskIconCache.java +7 −11 Original line number Diff line number Diff line Loading @@ -26,10 +26,8 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.UserHandle; import android.text.TextUtils; import android.util.SparseArray; import android.view.accessibility.AccessibilityManager; import androidx.annotation.WorkerThread; Loading @@ -37,6 +35,7 @@ import androidx.annotation.WorkerThread; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BaseIconFactory.IconOptions; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.IconProvider; import com.android.launcher3.util.DisplayController; Loading @@ -63,7 +62,7 @@ public class TaskIconCache implements DisplayInfoChangeListener { private final Context mContext; private final TaskKeyLruCache<TaskCacheEntry> mIconCache; private final SparseArray<BitmapInfo> mDefaultIcons = new SparseArray<>(); private final BitmapInfo[] mDefaultIcons = new BitmapInfo[1]; private final IconProvider mIconProvider; private BaseIconFactory mIconFactory; Loading Loading @@ -154,7 +153,6 @@ public class TaskIconCache implements DisplayInfoChangeListener { // TODO: Load icon resource (b/143363444) Bitmap icon = TaskDescriptionCompat.getIcon(desc, key.userId); if (icon != null) { /* isInstantApp */ entry.icon = getBitmapInfo( new BitmapDrawable(mContext.getResources(), icon), key.userId, Loading Loading @@ -210,14 +208,12 @@ public class TaskIconCache implements DisplayInfoChangeListener { @WorkerThread private Drawable getDefaultIcon(int userId) { synchronized (mDefaultIcons) { BitmapInfo info = mDefaultIcons.get(userId); if (info == null) { if (mDefaultIcons[0] == null) { try (BaseIconFactory bif = getIconFactory()) { info = bif.makeDefaultIcon(UserHandle.of(userId)); mDefaultIcons[0] = bif.makeDefaultIcon(); } mDefaultIcons.put(userId, info); } return info.newIcon(mContext); return mDefaultIcons[0].clone().withUser(UserHandle.of(userId)).newIcon(mContext); } } Loading @@ -229,8 +225,8 @@ public class TaskIconCache implements DisplayInfoChangeListener { bif.setWrapperBackgroundColor(primaryColor); // User version code O, so that the icon is always wrapped in an adaptive icon container return bif.createBadgedIconBitmap(drawable, UserHandle.of(userId), Build.VERSION_CODES.O, isInstantApp); return bif.createBadgedIconBitmap(drawable, new IconOptions().setUser(UserHandle.of(userId)).setInstantApp(isInstantApp)); } } Loading src/com/android/launcher3/AutoInstallsLayout.java +1 −3 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build.VERSION; import android.os.Bundle; import android.os.Process; import android.text.TextUtils; import android.util.ArrayMap; import android.util.AttributeSet; Loading Loading @@ -449,7 +447,7 @@ public class AutoInstallsLayout { // Auto installs should always support the current platform version. LauncherIcons li = LauncherIcons.obtain(mContext); mValues.put(LauncherSettings.Favorites.ICON, GraphicsUtils.flattenBitmap( li.createBadgedIconBitmap(icon, Process.myUserHandle(), VERSION.SDK_INT).icon)); li.createBadgedIconBitmap(icon).icon)); li.recycle(); mValues.put(Favorites.ICON_PACKAGE, mIconRes.getResourcePackageName(iconId)); Loading src/com/android/launcher3/BubbleTextView.java +13 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.launcher3; import static com.android.launcher3.config.FeatureFlags.ENABLE_ICON_LABEL_AUTO_SCALING; import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon; import static com.android.launcher3.icons.BitmapInfo.FLAG_NO_BADGE; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound; import android.animation.Animator; Loading Loading @@ -144,6 +146,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, private final boolean mIsRtl; private final int mIconSize; @ViewDebug.ExportedProperty(category = "launcher") private boolean mHideBadge = false; @ViewDebug.ExportedProperty(category = "launcher") private boolean mIsIconVisible = true; @ViewDebug.ExportedProperty(category = "launcher") Loading Loading @@ -241,6 +245,10 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, super.onFocusChanged(focused, direction, previouslyFocusedRect); } public void setHideBadge(boolean hideBadge) { mHideBadge = hideBadge; } /** * Resets the view so it can be recycled. */ Loading Loading @@ -364,7 +372,11 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, protected void applyIconAndLabel(ItemInfoWithIcon info) { boolean useTheme = mDisplay == DISPLAY_WORKSPACE || mDisplay == DISPLAY_FOLDER || mDisplay == DISPLAY_TASKBAR; FastBitmapDrawable iconDrawable = info.newIcon(getContext(), useTheme); int flags = useTheme ? FLAG_THEMED : 0; if (mHideBadge) { flags |= FLAG_NO_BADGE; } FastBitmapDrawable iconDrawable = info.newIcon(getContext(), flags); mDotParams.color = IconPalette.getMutedColor(iconDrawable.getIconColor(), 0.54f); setIcon(iconDrawable); Loading src/com/android/launcher3/Utilities.java +8 −35 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_ICON_BADGED; import android.annotation.TargetApi; Loading @@ -36,7 +37,6 @@ import android.content.pm.ShortcutInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.LightingColorFilter; Loading @@ -48,12 +48,12 @@ import android.graphics.RectF; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; import android.net.Uri; import android.os.Build; import android.os.DeadObjectException; import android.os.Handler; import android.os.Message; import android.os.Process; import android.os.TransactionTooLargeException; import android.provider.Settings; import android.text.Spannable; Loading @@ -78,7 +78,6 @@ import com.android.launcher3.graphics.GridCustomizationsProvider; import com.android.launcher3.graphics.TintedDrawableSpan; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.FastBitmapDrawable; import com.android.launcher3.icons.LauncherIcons; import com.android.launcher3.icons.ShortcutCachingLogic; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; Loading Loading @@ -110,8 +109,6 @@ public final class Utilities { private static final Pattern sTrimPattern = Pattern.compile("^[\\s|\\p{javaSpaceChar}]*(.*)[\\s|\\p{javaSpaceChar}]*$"); private static final float[] sTmpFloatArray = new float[4]; private static final int[] sLoc0 = new int[2]; private static final int[] sLoc1 = new int[2]; private static final Matrix sMatrix = new Matrix(); Loading Loading @@ -738,27 +735,23 @@ public final class Utilities { @TargetApi(Build.VERSION_CODES.O) public static Drawable getBadge(Context context, ItemInfo info, Object obj) { LauncherAppState appState = LauncherAppState.getInstance(context); int iconSize = appState.getInvariantDeviceProfile().iconBitmapSize; if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) { boolean iconBadged = (info instanceof ItemInfoWithIcon) && (((ItemInfoWithIcon) info).runtimeStatusFlags & FLAG_ICON_BADGED) > 0; if ((info.id == ItemInfo.NO_ID && !iconBadged) || !(obj instanceof ShortcutInfo)) { // The item is not yet added on home screen. return new FixedSizeEmptyDrawable(iconSize); return new ColorDrawable(Color.TRANSPARENT); } ShortcutInfo si = (ShortcutInfo) obj; Bitmap badge = LauncherAppState.getInstance(appState.getContext()) .getIconCache().getShortcutInfoBadge(si).icon; float badgeSize = LauncherIcons.getBadgeSizeForIconSize(iconSize); float insetFraction = (iconSize - badgeSize) / iconSize; return new InsetDrawable(new FastBitmapDrawable(badge), insetFraction, insetFraction, 0, 0); return LauncherAppState.getInstance(appState.getContext()) .getIconCache().getShortcutInfoBadge(si).newIcon(context, FLAG_THEMED); } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) { return ((FolderAdaptiveIcon) obj).getBadge(); } else { return context.getPackageManager() .getUserBadgedIcon(new FixedSizeEmptyDrawable(iconSize), info.user); return Process.myUserHandle().equals(info.user) ? new ColorDrawable(Color.TRANSPARENT) : context.getDrawable(R.drawable.ic_work_app_badge); } } Loading Loading @@ -864,24 +857,4 @@ public final class Utilities { v.getLocationOnScreen(pos); return new Rect(pos[0], pos[1], pos[0] + v.getWidth(), pos[1] + v.getHeight()); } private static class FixedSizeEmptyDrawable extends ColorDrawable { private final int mSize; public FixedSizeEmptyDrawable(int size) { super(Color.TRANSPARENT); mSize = size; } @Override public int getIntrinsicHeight() { return mSize; } @Override public int getIntrinsicWidth() { return mSize; } } } Loading
quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3.uioverrides; import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import android.animation.Animator; import android.animation.AnimatorSet; Loading Loading @@ -236,7 +237,7 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView { mSlotMachineIcons = new ArrayList<>(iconsToAnimate.size() + 2); mSlotMachineIcons.add(getIcon()); iconsToAnimate.stream() .map(iconInfo -> iconInfo.newThemedIcon(mContext)) .map(iconInfo -> iconInfo.newIcon(mContext, FLAG_THEMED)) .forEach(mSlotMachineIcons::add); if (endWithOriginalIcon) { mSlotMachineIcons.add(getIcon()); Loading
quickstep/src/com/android/quickstep/TaskIconCache.java +7 −11 Original line number Diff line number Diff line Loading @@ -26,10 +26,8 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.UserHandle; import android.text.TextUtils; import android.util.SparseArray; import android.view.accessibility.AccessibilityManager; import androidx.annotation.WorkerThread; Loading @@ -37,6 +35,7 @@ import androidx.annotation.WorkerThread; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BaseIconFactory.IconOptions; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.IconProvider; import com.android.launcher3.util.DisplayController; Loading @@ -63,7 +62,7 @@ public class TaskIconCache implements DisplayInfoChangeListener { private final Context mContext; private final TaskKeyLruCache<TaskCacheEntry> mIconCache; private final SparseArray<BitmapInfo> mDefaultIcons = new SparseArray<>(); private final BitmapInfo[] mDefaultIcons = new BitmapInfo[1]; private final IconProvider mIconProvider; private BaseIconFactory mIconFactory; Loading Loading @@ -154,7 +153,6 @@ public class TaskIconCache implements DisplayInfoChangeListener { // TODO: Load icon resource (b/143363444) Bitmap icon = TaskDescriptionCompat.getIcon(desc, key.userId); if (icon != null) { /* isInstantApp */ entry.icon = getBitmapInfo( new BitmapDrawable(mContext.getResources(), icon), key.userId, Loading Loading @@ -210,14 +208,12 @@ public class TaskIconCache implements DisplayInfoChangeListener { @WorkerThread private Drawable getDefaultIcon(int userId) { synchronized (mDefaultIcons) { BitmapInfo info = mDefaultIcons.get(userId); if (info == null) { if (mDefaultIcons[0] == null) { try (BaseIconFactory bif = getIconFactory()) { info = bif.makeDefaultIcon(UserHandle.of(userId)); mDefaultIcons[0] = bif.makeDefaultIcon(); } mDefaultIcons.put(userId, info); } return info.newIcon(mContext); return mDefaultIcons[0].clone().withUser(UserHandle.of(userId)).newIcon(mContext); } } Loading @@ -229,8 +225,8 @@ public class TaskIconCache implements DisplayInfoChangeListener { bif.setWrapperBackgroundColor(primaryColor); // User version code O, so that the icon is always wrapped in an adaptive icon container return bif.createBadgedIconBitmap(drawable, UserHandle.of(userId), Build.VERSION_CODES.O, isInstantApp); return bif.createBadgedIconBitmap(drawable, new IconOptions().setUser(UserHandle.of(userId)).setInstantApp(isInstantApp)); } } Loading
src/com/android/launcher3/AutoInstallsLayout.java +1 −3 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build.VERSION; import android.os.Bundle; import android.os.Process; import android.text.TextUtils; import android.util.ArrayMap; import android.util.AttributeSet; Loading Loading @@ -449,7 +447,7 @@ public class AutoInstallsLayout { // Auto installs should always support the current platform version. LauncherIcons li = LauncherIcons.obtain(mContext); mValues.put(LauncherSettings.Favorites.ICON, GraphicsUtils.flattenBitmap( li.createBadgedIconBitmap(icon, Process.myUserHandle(), VERSION.SDK_INT).icon)); li.createBadgedIconBitmap(icon).icon)); li.recycle(); mValues.put(Favorites.ICON_PACKAGE, mIconRes.getResourcePackageName(iconId)); Loading
src/com/android/launcher3/BubbleTextView.java +13 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.launcher3; import static com.android.launcher3.config.FeatureFlags.ENABLE_ICON_LABEL_AUTO_SCALING; import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon; import static com.android.launcher3.icons.BitmapInfo.FLAG_NO_BADGE; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound; import android.animation.Animator; Loading Loading @@ -144,6 +146,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, private final boolean mIsRtl; private final int mIconSize; @ViewDebug.ExportedProperty(category = "launcher") private boolean mHideBadge = false; @ViewDebug.ExportedProperty(category = "launcher") private boolean mIsIconVisible = true; @ViewDebug.ExportedProperty(category = "launcher") Loading Loading @@ -241,6 +245,10 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, super.onFocusChanged(focused, direction, previouslyFocusedRect); } public void setHideBadge(boolean hideBadge) { mHideBadge = hideBadge; } /** * Resets the view so it can be recycled. */ Loading Loading @@ -364,7 +372,11 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, protected void applyIconAndLabel(ItemInfoWithIcon info) { boolean useTheme = mDisplay == DISPLAY_WORKSPACE || mDisplay == DISPLAY_FOLDER || mDisplay == DISPLAY_TASKBAR; FastBitmapDrawable iconDrawable = info.newIcon(getContext(), useTheme); int flags = useTheme ? FLAG_THEMED : 0; if (mHideBadge) { flags |= FLAG_NO_BADGE; } FastBitmapDrawable iconDrawable = info.newIcon(getContext(), flags); mDotParams.color = IconPalette.getMutedColor(iconDrawable.getIconColor(), 0.54f); setIcon(iconDrawable); Loading
src/com/android/launcher3/Utilities.java +8 −35 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_ICON_BADGED; import android.annotation.TargetApi; Loading @@ -36,7 +37,6 @@ import android.content.pm.ShortcutInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.LightingColorFilter; Loading @@ -48,12 +48,12 @@ import android.graphics.RectF; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; import android.net.Uri; import android.os.Build; import android.os.DeadObjectException; import android.os.Handler; import android.os.Message; import android.os.Process; import android.os.TransactionTooLargeException; import android.provider.Settings; import android.text.Spannable; Loading @@ -78,7 +78,6 @@ import com.android.launcher3.graphics.GridCustomizationsProvider; import com.android.launcher3.graphics.TintedDrawableSpan; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.FastBitmapDrawable; import com.android.launcher3.icons.LauncherIcons; import com.android.launcher3.icons.ShortcutCachingLogic; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; Loading Loading @@ -110,8 +109,6 @@ public final class Utilities { private static final Pattern sTrimPattern = Pattern.compile("^[\\s|\\p{javaSpaceChar}]*(.*)[\\s|\\p{javaSpaceChar}]*$"); private static final float[] sTmpFloatArray = new float[4]; private static final int[] sLoc0 = new int[2]; private static final int[] sLoc1 = new int[2]; private static final Matrix sMatrix = new Matrix(); Loading Loading @@ -738,27 +735,23 @@ public final class Utilities { @TargetApi(Build.VERSION_CODES.O) public static Drawable getBadge(Context context, ItemInfo info, Object obj) { LauncherAppState appState = LauncherAppState.getInstance(context); int iconSize = appState.getInvariantDeviceProfile().iconBitmapSize; if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) { boolean iconBadged = (info instanceof ItemInfoWithIcon) && (((ItemInfoWithIcon) info).runtimeStatusFlags & FLAG_ICON_BADGED) > 0; if ((info.id == ItemInfo.NO_ID && !iconBadged) || !(obj instanceof ShortcutInfo)) { // The item is not yet added on home screen. return new FixedSizeEmptyDrawable(iconSize); return new ColorDrawable(Color.TRANSPARENT); } ShortcutInfo si = (ShortcutInfo) obj; Bitmap badge = LauncherAppState.getInstance(appState.getContext()) .getIconCache().getShortcutInfoBadge(si).icon; float badgeSize = LauncherIcons.getBadgeSizeForIconSize(iconSize); float insetFraction = (iconSize - badgeSize) / iconSize; return new InsetDrawable(new FastBitmapDrawable(badge), insetFraction, insetFraction, 0, 0); return LauncherAppState.getInstance(appState.getContext()) .getIconCache().getShortcutInfoBadge(si).newIcon(context, FLAG_THEMED); } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) { return ((FolderAdaptiveIcon) obj).getBadge(); } else { return context.getPackageManager() .getUserBadgedIcon(new FixedSizeEmptyDrawable(iconSize), info.user); return Process.myUserHandle().equals(info.user) ? new ColorDrawable(Color.TRANSPARENT) : context.getDrawable(R.drawable.ic_work_app_badge); } } Loading Loading @@ -864,24 +857,4 @@ public final class Utilities { v.getLocationOnScreen(pos); return new Rect(pos[0], pos[1], pos[0] + v.getWidth(), pos[1] + v.getHeight()); } private static class FixedSizeEmptyDrawable extends ColorDrawable { private final int mSize; public FixedSizeEmptyDrawable(int size) { super(Color.TRANSPARENT); mSize = size; } @Override public int getIntrinsicHeight() { return mSize; } @Override public int getIntrinsicWidth() { return mSize; } } }