Updating icon badging logic
Bug: 201682172 Test: Manual Change-Id: Id19f1bdabbfa0c203052f63245f0f4ede462429a
This commit is contained in:
@@ -95,9 +95,8 @@ class BubbleOverflow(
|
||||
|
||||
// Update bitmap
|
||||
val fg = InsetDrawable(overflowBtn?.drawable, overflowIconInset)
|
||||
bitmap = iconFactory.createBadgedIconBitmap(AdaptiveIconDrawable(
|
||||
ColorDrawable(colorAccent), fg),
|
||||
null /* user */, true /* shrinkNonAdaptiveIcons */).icon
|
||||
bitmap = iconFactory.createBadgedIconBitmap(
|
||||
AdaptiveIconDrawable(ColorDrawable(colorAccent), fg)).icon
|
||||
|
||||
// Update dot path
|
||||
dotPath = PathParser.createPathFromPathData(
|
||||
|
||||
@@ -189,9 +189,7 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask
|
||||
BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon,
|
||||
b.isImportantConversation());
|
||||
info.badgeBitmap = badgeBitmapInfo.icon;
|
||||
info.bubbleBitmap = iconFactory.createBadgedIconBitmap(bubbleDrawable,
|
||||
null /* user */,
|
||||
true /* shrinkNonAdaptiveIcons */).icon;
|
||||
info.bubbleBitmap = iconFactory.createBadgedIconBitmap(bubbleDrawable).icon;
|
||||
|
||||
// Dot color & placement
|
||||
Path iconPath = PathParser.createPathFromPathData(
|
||||
|
||||
@@ -390,8 +390,7 @@ public class SplashscreenContentDrawer {
|
||||
final ShapeIconFactory factory = new ShapeIconFactory(
|
||||
SplashscreenContentDrawer.this.mContext,
|
||||
scaledIconDpi, mFinalIconSize);
|
||||
final Bitmap bitmap = factory.createScaledBitmapWithoutShadow(
|
||||
iconDrawable, true /* shrinkNonAdaptiveIcons */);
|
||||
final Bitmap bitmap = factory.createScaledBitmapWithoutShadow(iconDrawable);
|
||||
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
||||
createIconDrawable(new BitmapDrawable(bitmap), true);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import android.graphics.Color;
|
||||
import android.graphics.ColorFilter;
|
||||
import android.graphics.ColorMatrix;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.location.LocationManager;
|
||||
import android.media.AudioManager;
|
||||
@@ -44,6 +43,7 @@ import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.UserIcons;
|
||||
import com.android.launcher3.icons.BaseIconFactory.IconOptions;
|
||||
import com.android.launcher3.icons.IconFactory;
|
||||
import com.android.settingslib.drawable.UserIconDrawable;
|
||||
import com.android.settingslib.fuelgauge.BatteryStatus;
|
||||
@@ -525,9 +525,9 @@ public class Utils {
|
||||
/** Get the corresponding adaptive icon drawable. */
|
||||
public static Drawable getBadgedIcon(Context context, Drawable icon, UserHandle user) {
|
||||
try (IconFactory iconFactory = IconFactory.obtain(context)) {
|
||||
final Bitmap iconBmp = iconFactory.createBadgedIconBitmap(icon, user,
|
||||
true /* shrinkNonAdaptiveIcons */).icon;
|
||||
return new BitmapDrawable(context.getResources(), iconBmp);
|
||||
return iconFactory
|
||||
.createBadgedIconBitmap(icon, new IconOptions().setUser(user))
|
||||
.newIcon(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import static android.appwidget.AppWidgetManager.OPTION_APPWIDGET_SIZES;
|
||||
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
|
||||
import static android.util.TypedValue.COMPLEX_UNIT_PX;
|
||||
|
||||
import static com.android.launcher3.icons.FastBitmapDrawable.getDisabledColorFilter;
|
||||
import static com.android.systemui.people.PeopleSpaceUtils.STARRED_CONTACT;
|
||||
import static com.android.systemui.people.PeopleSpaceUtils.VALID_CONTACT;
|
||||
import static com.android.systemui.people.PeopleSpaceUtils.convertDrawableToBitmap;
|
||||
@@ -45,8 +46,6 @@ import android.app.people.PeopleSpaceTile;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.ColorMatrix;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.graphics.ImageDecoder;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
@@ -75,7 +74,6 @@ import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
|
||||
import androidx.core.math.MathUtils;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.people.widget.LaunchConversationActivity;
|
||||
import com.android.systemui.people.widget.PeopleSpaceWidgetProvider;
|
||||
@@ -339,8 +337,9 @@ public class PeopleTileViewHelper {
|
||||
views = new RemoteViews(mContext.getPackageName(),
|
||||
R.layout.people_tile_suppressed_layout);
|
||||
}
|
||||
Drawable appIcon = mContext.getDrawable(R.drawable.ic_conversation_icon);
|
||||
Bitmap disabledBitmap = convertDrawableToDisabledBitmap(appIcon);
|
||||
Drawable appIcon = mContext.getDrawable(R.drawable.ic_conversation_icon).mutate();
|
||||
appIcon.setColorFilter(getDisabledColorFilter());
|
||||
Bitmap disabledBitmap = convertDrawableToBitmap(appIcon);
|
||||
views.setImageViewBitmap(R.id.icon, disabledBitmap);
|
||||
return views;
|
||||
}
|
||||
@@ -1262,8 +1261,9 @@ public class PeopleTileViewHelper {
|
||||
Context context, PeopleSpaceTile tile, int maxAvatarSize, boolean hasNewStory) {
|
||||
Icon icon = tile.getUserIcon();
|
||||
if (icon == null) {
|
||||
Drawable placeholder = context.getDrawable(R.drawable.ic_avatar_with_badge);
|
||||
return convertDrawableToDisabledBitmap(placeholder);
|
||||
Drawable placeholder = context.getDrawable(R.drawable.ic_avatar_with_badge).mutate();
|
||||
placeholder.setColorFilter(getDisabledColorFilter());
|
||||
return convertDrawableToBitmap(placeholder);
|
||||
}
|
||||
PeopleStoryIconFactory storyIcon = new PeopleStoryIconFactory(context,
|
||||
context.getPackageManager(),
|
||||
@@ -1276,10 +1276,7 @@ public class PeopleTileViewHelper {
|
||||
hasNewStory);
|
||||
|
||||
if (isDndBlockingTileData(tile)) {
|
||||
// If DND is blocking the conversation, then display the icon in grayscale.
|
||||
ColorMatrix colorMatrix = new ColorMatrix();
|
||||
colorMatrix.setSaturation(0);
|
||||
personDrawable.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
|
||||
personDrawable.setColorFilter(getDisabledColorFilter());
|
||||
}
|
||||
|
||||
return convertDrawableToBitmap(personDrawable);
|
||||
@@ -1375,11 +1372,4 @@ public class PeopleTileViewHelper {
|
||||
mAvatarSize = avatarSize;
|
||||
}
|
||||
}
|
||||
|
||||
private static Bitmap convertDrawableToDisabledBitmap(Drawable icon) {
|
||||
Bitmap appIconAsBitmap = convertDrawableToBitmap(icon);
|
||||
FastBitmapDrawable drawable = new FastBitmapDrawable(appIconAsBitmap);
|
||||
drawable.setIsDisabled(true);
|
||||
return convertDrawableToBitmap(drawable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,8 +30,6 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.res.Configuration;
|
||||
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;
|
||||
@@ -42,6 +40,7 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.launcher3.icons.BaseIconFactory.IconOptions;
|
||||
import com.android.launcher3.icons.IconFactory;
|
||||
import com.android.settingslib.applications.ApplicationsState;
|
||||
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
@@ -280,9 +279,14 @@ public class SystemUIToast implements ToastPlugin.Toast {
|
||||
final ApplicationInfo appInfo = appEntry.info;
|
||||
UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid);
|
||||
IconFactory iconFactory = IconFactory.obtain(context);
|
||||
Bitmap iconBmp = iconFactory.createBadgedIconBitmap(
|
||||
appInfo.loadUnbadgedIcon(packageManager), user, true).icon;
|
||||
return new BitmapDrawable(context.getResources(), iconBmp);
|
||||
try {
|
||||
return iconFactory.createBadgedIconBitmap(
|
||||
appInfo.loadUnbadgedIcon(packageManager),
|
||||
new IconOptions().setUser(user))
|
||||
.newIcon(context);
|
||||
} finally {
|
||||
iconFactory.recycle();
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean showApplicationIcon(ApplicationInfo appInfo,
|
||||
|
||||
Reference in New Issue
Block a user