Loading res/values/colors.xml +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ <color name="notification_icon_default_color">#757575</color> <!-- Gray 600 --> <color name="notification_color_beneath">#E0E0E0</color> <!-- Gray 300 --> <color name="badge_color">#1DE9B6</color> <!-- Teal A400 --> <!-- System shortcuts --> <color name="system_shortcuts_icon_color">@android:color/tertiary_text_light</color> Loading src/com/android/launcher3/BubbleTextView.java +1 −1 Original line number Diff line number Diff line Loading @@ -453,7 +453,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver { final int scrollX = getScrollX(); final int scrollY = getScrollY(); canvas.translate(scrollX, scrollY); mBadgeRenderer.draw(canvas, mIconPalette, mBadgeInfo, mTempIconBounds, mBadgeScale, mBadgeRenderer.draw(canvas, mBadgeInfo, mTempIconBounds, mBadgeScale, mTempSpaceForBadgeOffset); canvas.translate(-scrollX, -scrollY); } Loading src/com/android/launcher3/badge/BadgeRenderer.java +8 −6 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class BadgeRenderer { private final Paint mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); private final SparseArray<Bitmap> mBackgroundsWithShadow; private final IconPalette mIconPalette; public BadgeRenderer(Context context, int iconSizePx) { mContext = context; Loading @@ -82,24 +83,25 @@ public class BadgeRenderer { mTextHeight = tempTextHeight.height(); mBackgroundsWithShadow = new SparseArray<>(3); mIconPalette = IconPalette.fromDominantColor(context.getColor(R.color.badge_color)); } /** * Draw a circle in the top right corner of the given bounds, and draw * {@link BadgeInfo#getNotificationCount()} on top of the circle. * @param palette The colors (based on the icon) to use for the badge. * @param badgeInfo Contains data to draw on the badge. Could be null if we are animating out. * @param iconBounds The bounds of the icon being badged. * @param badgeScale The progress of the animation, from 0 to 1. * @param spaceForOffset How much space is available to offset the badge up and to the right. */ public void draw(Canvas canvas, IconPalette palette, @Nullable BadgeInfo badgeInfo, public void draw(Canvas canvas, @Nullable BadgeInfo badgeInfo, Rect iconBounds, float badgeScale, Point spaceForOffset) { mTextPaint.setColor(palette.textColor); mTextPaint.setColor(mIconPalette.textColor); IconDrawer iconDrawer = badgeInfo != null && badgeInfo.isIconLarge() ? mLargeIconDrawer : mSmallIconDrawer; Shader icon = badgeInfo == null ? null : badgeInfo.getNotificationIconForBadge( mContext, palette.backgroundColor, mSize, iconDrawer.mPadding); mContext, mIconPalette.backgroundColor, mSize, iconDrawer.mPadding); String notificationCount = badgeInfo == null ? "0" : String.valueOf(badgeInfo.getNotificationCount()); int numChars = notificationCount.length(); Loading @@ -125,7 +127,7 @@ public class BadgeRenderer { canvas.translate(badgeCenterX + offsetX, badgeCenterY - offsetY); canvas.scale(badgeScale, badgeScale); // Prepare the background and shadow and possible stacking effect. mBackgroundPaint.setColorFilter(palette.backgroundColorMatrixFilter); mBackgroundPaint.setColorFilter(mIconPalette.backgroundColorMatrixFilter); int backgroundWithShadowSize = backgroundWithShadow.getHeight(); // Same as width. boolean shouldStack = !isDot && badgeInfo != null && badgeInfo.getNotificationKeys().size() > 1; Loading @@ -147,7 +149,7 @@ public class BadgeRenderer { -backgroundWithShadowSize / 2, mBackgroundPaint); iconDrawer.drawIcon(icon, canvas); } else if (isDot) { mBackgroundPaint.setColorFilter(palette.saturatedBackgroundColorMatrixFilter); mBackgroundPaint.setColorFilter(mIconPalette.saturatedBackgroundColorMatrixFilter); canvas.drawBitmap(backgroundWithShadow, -backgroundWithShadowSize / 2, -backgroundWithShadowSize / 2, mBackgroundPaint); } Loading src/com/android/launcher3/folder/FolderIcon.java +1 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ import com.android.launcher3.badge.FolderBadgeInfo; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragView; import com.android.launcher3.graphics.IconPalette; import com.android.launcher3.util.Thunk; import java.util.ArrayList; Loading Loading @@ -886,7 +885,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { // If we are animating to the accepting state, animate the badge out. float badgeScale = Math.max(0, mBadgeScale - mBackground.getScaleProgress()); mTempSpaceForBadgeOffset.set(getWidth() - mTempBounds.right, mTempBounds.top); mBadgeRenderer.draw(canvas, IconPalette.FOLDER_ICON_PALETTE, mBadgeInfo, mTempBounds, mBadgeRenderer.draw(canvas, mBadgeInfo, mTempBounds, badgeScale, mTempSpaceForBadgeOffset); } } Loading src/com/android/launcher3/graphics/IconPalette.java +1 −5 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class IconPalette { private IconPalette(int color) { dominantColor = color; backgroundColor = getMutedColor(dominantColor); backgroundColor = dominantColor; ColorMatrix backgroundColorMatrix = new ColorMatrix(); Themes.setColorScaleOnMatrix(backgroundColor, backgroundColorMatrix); backgroundColorMatrixFilter = new ColorMatrixColorFilter(backgroundColorMatrix); Loading Loading @@ -176,10 +176,6 @@ public class IconPalette { return ColorUtils.LABToColor(low, a, b); } private static int getMutedColor(int color) { return getMutedColor(color, 0.87f); } private static int getMutedColor(int color, float whiteScrimAlpha) { int whiteScrim = ColorUtils.setAlphaComponent(Color.WHITE, (int) (255 * whiteScrimAlpha)); return ColorUtils.compositeColors(whiteScrim, color); Loading Loading
res/values/colors.xml +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ <color name="notification_icon_default_color">#757575</color> <!-- Gray 600 --> <color name="notification_color_beneath">#E0E0E0</color> <!-- Gray 300 --> <color name="badge_color">#1DE9B6</color> <!-- Teal A400 --> <!-- System shortcuts --> <color name="system_shortcuts_icon_color">@android:color/tertiary_text_light</color> Loading
src/com/android/launcher3/BubbleTextView.java +1 −1 Original line number Diff line number Diff line Loading @@ -453,7 +453,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver { final int scrollX = getScrollX(); final int scrollY = getScrollY(); canvas.translate(scrollX, scrollY); mBadgeRenderer.draw(canvas, mIconPalette, mBadgeInfo, mTempIconBounds, mBadgeScale, mBadgeRenderer.draw(canvas, mBadgeInfo, mTempIconBounds, mBadgeScale, mTempSpaceForBadgeOffset); canvas.translate(-scrollX, -scrollY); } Loading
src/com/android/launcher3/badge/BadgeRenderer.java +8 −6 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class BadgeRenderer { private final Paint mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); private final SparseArray<Bitmap> mBackgroundsWithShadow; private final IconPalette mIconPalette; public BadgeRenderer(Context context, int iconSizePx) { mContext = context; Loading @@ -82,24 +83,25 @@ public class BadgeRenderer { mTextHeight = tempTextHeight.height(); mBackgroundsWithShadow = new SparseArray<>(3); mIconPalette = IconPalette.fromDominantColor(context.getColor(R.color.badge_color)); } /** * Draw a circle in the top right corner of the given bounds, and draw * {@link BadgeInfo#getNotificationCount()} on top of the circle. * @param palette The colors (based on the icon) to use for the badge. * @param badgeInfo Contains data to draw on the badge. Could be null if we are animating out. * @param iconBounds The bounds of the icon being badged. * @param badgeScale The progress of the animation, from 0 to 1. * @param spaceForOffset How much space is available to offset the badge up and to the right. */ public void draw(Canvas canvas, IconPalette palette, @Nullable BadgeInfo badgeInfo, public void draw(Canvas canvas, @Nullable BadgeInfo badgeInfo, Rect iconBounds, float badgeScale, Point spaceForOffset) { mTextPaint.setColor(palette.textColor); mTextPaint.setColor(mIconPalette.textColor); IconDrawer iconDrawer = badgeInfo != null && badgeInfo.isIconLarge() ? mLargeIconDrawer : mSmallIconDrawer; Shader icon = badgeInfo == null ? null : badgeInfo.getNotificationIconForBadge( mContext, palette.backgroundColor, mSize, iconDrawer.mPadding); mContext, mIconPalette.backgroundColor, mSize, iconDrawer.mPadding); String notificationCount = badgeInfo == null ? "0" : String.valueOf(badgeInfo.getNotificationCount()); int numChars = notificationCount.length(); Loading @@ -125,7 +127,7 @@ public class BadgeRenderer { canvas.translate(badgeCenterX + offsetX, badgeCenterY - offsetY); canvas.scale(badgeScale, badgeScale); // Prepare the background and shadow and possible stacking effect. mBackgroundPaint.setColorFilter(palette.backgroundColorMatrixFilter); mBackgroundPaint.setColorFilter(mIconPalette.backgroundColorMatrixFilter); int backgroundWithShadowSize = backgroundWithShadow.getHeight(); // Same as width. boolean shouldStack = !isDot && badgeInfo != null && badgeInfo.getNotificationKeys().size() > 1; Loading @@ -147,7 +149,7 @@ public class BadgeRenderer { -backgroundWithShadowSize / 2, mBackgroundPaint); iconDrawer.drawIcon(icon, canvas); } else if (isDot) { mBackgroundPaint.setColorFilter(palette.saturatedBackgroundColorMatrixFilter); mBackgroundPaint.setColorFilter(mIconPalette.saturatedBackgroundColorMatrixFilter); canvas.drawBitmap(backgroundWithShadow, -backgroundWithShadowSize / 2, -backgroundWithShadowSize / 2, mBackgroundPaint); } Loading
src/com/android/launcher3/folder/FolderIcon.java +1 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ import com.android.launcher3.badge.FolderBadgeInfo; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragView; import com.android.launcher3.graphics.IconPalette; import com.android.launcher3.util.Thunk; import java.util.ArrayList; Loading Loading @@ -886,7 +885,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { // If we are animating to the accepting state, animate the badge out. float badgeScale = Math.max(0, mBadgeScale - mBackground.getScaleProgress()); mTempSpaceForBadgeOffset.set(getWidth() - mTempBounds.right, mTempBounds.top); mBadgeRenderer.draw(canvas, IconPalette.FOLDER_ICON_PALETTE, mBadgeInfo, mTempBounds, mBadgeRenderer.draw(canvas, mBadgeInfo, mTempBounds, badgeScale, mTempSpaceForBadgeOffset); } } Loading
src/com/android/launcher3/graphics/IconPalette.java +1 −5 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class IconPalette { private IconPalette(int color) { dominantColor = color; backgroundColor = getMutedColor(dominantColor); backgroundColor = dominantColor; ColorMatrix backgroundColorMatrix = new ColorMatrix(); Themes.setColorScaleOnMatrix(backgroundColor, backgroundColorMatrix); backgroundColorMatrixFilter = new ColorMatrixColorFilter(backgroundColorMatrix); Loading Loading @@ -176,10 +176,6 @@ public class IconPalette { return ColorUtils.LABToColor(low, a, b); } private static int getMutedColor(int color) { return getMutedColor(color, 0.87f); } private static int getMutedColor(int color, float whiteScrimAlpha) { int whiteScrim = ColorUtils.setAlphaComponent(Color.WHITE, (int) (255 * whiteScrimAlpha)); return ColorUtils.compositeColors(whiteScrim, color); Loading