Merge "Fix the gold highlight encircles the app badge in the bubble." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b0bc7497b6
@@ -77,6 +77,7 @@ class Bubble implements BubbleViewProvider {
|
||||
private BubbleViewInfoTask mInflationTask;
|
||||
private boolean mInflateSynchronously;
|
||||
private boolean mPendingIntentCanceled;
|
||||
private boolean mIsImportantConversation;
|
||||
|
||||
/**
|
||||
* Presentational info about the flyout.
|
||||
@@ -363,6 +364,8 @@ class Bubble implements BubbleViewProvider {
|
||||
mIntent = entry.getBubbleMetadata().getIntent();
|
||||
mDeleteIntent = entry.getBubbleMetadata().getDeleteIntent();
|
||||
}
|
||||
mIsImportantConversation =
|
||||
entry.getChannel() == null ? false : entry.getChannel().isImportantConversation();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -432,6 +435,13 @@ class Bubble implements BubbleViewProvider {
|
||||
return !shouldSuppressNotification() || !mIsClearable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this notification conversation is important.
|
||||
*/
|
||||
boolean isImportantConversation() {
|
||||
return mIsImportantConversation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether this notification should be suppressed in the shade.
|
||||
*/
|
||||
|
||||
@@ -23,6 +23,8 @@ import android.content.pm.LauncherApps;
|
||||
import android.content.pm.ShortcutInfo;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
@@ -76,15 +78,36 @@ public class BubbleIconFactory extends BaseIconFactory {
|
||||
* Returns a {@link BitmapInfo} for the app-badge that is shown on top of each bubble. This
|
||||
* will include the workprofile indicator on the badge if appropriate.
|
||||
*/
|
||||
BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon) {
|
||||
BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon, boolean isImportantConversation) {
|
||||
Bitmap userBadgedBitmap = createIconBitmap(
|
||||
userBadgedAppIcon, 1f, getBadgeSize());
|
||||
|
||||
Canvas c = new Canvas();
|
||||
ShadowGenerator shadowGenerator = new ShadowGenerator(getBadgeSize());
|
||||
c.setBitmap(userBadgedBitmap);
|
||||
shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c);
|
||||
return createIconBitmap(userBadgedBitmap);
|
||||
if (!isImportantConversation) {
|
||||
Canvas c = new Canvas();
|
||||
c.setBitmap(userBadgedBitmap);
|
||||
shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c);
|
||||
return createIconBitmap(userBadgedBitmap);
|
||||
} else {
|
||||
float ringStrokeWidth = mContext.getResources().getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.importance_ring_stroke_width);
|
||||
int importantConversationColor = mContext.getResources().getColor(
|
||||
com.android.settingslib.R.color.important_conversation, null);
|
||||
Bitmap badgeAndRing = Bitmap.createBitmap(userBadgedBitmap.getWidth(),
|
||||
userBadgedBitmap.getHeight(), userBadgedBitmap.getConfig());
|
||||
Canvas c = new Canvas(badgeAndRing);
|
||||
Rect dest = new Rect((int) ringStrokeWidth, (int) ringStrokeWidth,
|
||||
c.getHeight() - (int) ringStrokeWidth, c.getWidth() - (int) ringStrokeWidth);
|
||||
c.drawBitmap(userBadgedBitmap, null, dest, null);
|
||||
Paint ringPaint = new Paint();
|
||||
ringPaint.setStyle(Paint.Style.STROKE);
|
||||
ringPaint.setColor(importantConversationColor);
|
||||
ringPaint.setAntiAlias(true);
|
||||
ringPaint.setStrokeWidth(ringStrokeWidth);
|
||||
c.drawCircle(c.getWidth() / 2, c.getHeight() / 2, c.getWidth() / 2 - ringStrokeWidth,
|
||||
ringPaint);
|
||||
shadowGenerator.recreateIcon(Bitmap.createBitmap(badgeAndRing), c);
|
||||
return createIconBitmap(badgeAndRing);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -176,7 +176,8 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask
|
||||
bubbleDrawable = appIcon;
|
||||
}
|
||||
|
||||
BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon);
|
||||
BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon,
|
||||
b.isImportantConversation());
|
||||
info.badgedAppIcon = badgedIcon;
|
||||
info.badgedBubbleImage = iconFactory.getBubbleBitmap(bubbleDrawable,
|
||||
badgeBitmapInfo).icon;
|
||||
|
||||
Reference in New Issue
Block a user