diff options
author | Tony Wickham <twickham@google.com> | 2017-01-11 09:53:12 -0800 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2017-01-13 10:58:10 -0800 |
commit | 9a8d11f930ced4c2706db150b7bbbb21330bd68d (patch) | |
tree | 836cd603e38d3cb17ae0a5950757b479639c6c85 /src/com/android/launcher3/FastBitmapDrawable.java | |
parent | 19ea5cc0c853d48db59363f763d9a06c8691e00d (diff) | |
download | android_packages_apps_Trebuchet-9a8d11f930ced4c2706db150b7bbbb21330bd68d.tar.gz android_packages_apps_Trebuchet-9a8d11f930ced4c2706db150b7bbbb21330bd68d.tar.bz2 android_packages_apps_Trebuchet-9a8d11f930ced4c2706db150b7bbbb21330bd68d.zip |
FastBitmapDrawable can draw an icon badge (notification count)
- Added BadgeInfo to contain data to be shown in a badge
(currently just notification count).
- Added BadgeRenderer in DeviceProfile to contain things
relevant to drawing the badge, such as size and Paint's.
- Added IconPalette to compute colors for the badge based
on a dominant color (will also be used for notifications)
- FastBitmapDrawable uses these classes to draw the badge.
Bug: 32410600
Change-Id: I6595a4879943357590f7d20c22594691a573ecaf
Diffstat (limited to 'src/com/android/launcher3/FastBitmapDrawable.java')
-rw-r--r-- | src/com/android/launcher3/FastBitmapDrawable.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/com/android/launcher3/FastBitmapDrawable.java b/src/com/android/launcher3/FastBitmapDrawable.java index 0cefc5739..b3e59f99b 100644 --- a/src/com/android/launcher3/FastBitmapDrawable.java +++ b/src/com/android/launcher3/FastBitmapDrawable.java @@ -33,6 +33,10 @@ import android.graphics.drawable.Drawable; import android.util.SparseArray; import android.view.animation.DecelerateInterpolator; +import com.android.launcher3.graphics.IconPalette; +import com.android.launcher3.badge.BadgeRenderer; +import com.android.launcher3.badge.BadgeInfo; + public class FastBitmapDrawable extends Drawable { private static final float DISABLED_DESATURATION = 1f; private static final float DISABLED_BRIGHTNESS = 0.5f; @@ -99,6 +103,10 @@ public class FastBitmapDrawable extends Drawable { private State mState = State.NORMAL; private boolean mIsDisabled; + private BadgeInfo mBadgeInfo; + private BadgeRenderer mBadgeRenderer; + private IconPalette mIconPalette; + // The saturation and brightness are values that are mapped to REDUCED_FILTER_VALUE_SPACE and // as a result, can be used to compose the key for the cached ColorMatrixColorFilters private int mDesaturation = 0; @@ -114,9 +122,21 @@ public class FastBitmapDrawable extends Drawable { setBounds(0, 0, b.getWidth(), b.getHeight()); } + public void applyIconBadge(BadgeInfo badgeInfo, BadgeRenderer badgeRenderer) { + mBadgeInfo = badgeInfo; + mBadgeRenderer = badgeRenderer; + if (mIconPalette == null) { + mIconPalette = IconPalette.fromDominantColor(Utilities + .findDominantColorByHue(mBitmap, 20)); + } + invalidateSelf(); + } + @Override public void draw(Canvas canvas) { drawInternal(canvas); + // Draw the icon badge in the top right corner. + drawBadgeIfNecessary(canvas); } public void drawWithBrightness(Canvas canvas, float brightness) { @@ -130,6 +150,16 @@ public class FastBitmapDrawable extends Drawable { canvas.drawBitmap(mBitmap, null, getBounds(), mPaint); } + protected void drawBadgeIfNecessary(Canvas canvas) { + if (hasBadge()) { + mBadgeRenderer.draw(canvas, mIconPalette, mBadgeInfo, getBounds()); + } + } + + private boolean hasBadge() { + return mBadgeInfo != null && mBadgeInfo.getNotificationCount() != null; + } + @Override public void setColorFilter(ColorFilter cf) { // No op |