From c818affc198163dba0fe94d6553fad74e1fded6a Mon Sep 17 00:00:00 2001 From: Santhosh Thangaraj Date: Mon, 15 Jun 2020 17:32:43 -0700 Subject: [PATCH] Fix the gold highlight encircles the app badge in the bubble. Bug: 158310637 Test: Manual test on device Change-Id: Ie899c44dfdbd81ad942c050ccf5ce36561856078 --- .../systemui/bubbles/BubbleIconFactory.java | 36 +++++++++++++++---- .../systemui/bubbles/BubbleViewInfoTask.java | 5 ++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java index 74231c648f006..aa665eb38581b 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java @@ -22,6 +22,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,37 @@ 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); + } + } /** diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java index 525d5b56cc8ec..ec1db20a8e005 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java @@ -202,7 +202,10 @@ public class BubbleViewInfoTask extends AsyncTask