From: Sunny Goyal Date: Fri, 8 Jan 2016 20:16:15 +0000 (-0800) Subject: Fixing icon badging being done on scaled bitmap size X-Git-Tag: android-x86-7.1-r1~166^2~46^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e1483fb1cdabb33e7031bdebba96212d920c7416;p=android-x86%2Fpackages-apps-Launcher3.git Fixing icon badging being done on scaled bitmap size Launcher already scales the bitmap during the icon creaiton. The badging should be done based on the actual size Bug: 26345646 Change-Id: I1b1f7ac736322ba10db9083d602eec221b99687a --- diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index f9524a1c4..87c9262d7 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -210,7 +210,7 @@ public final class Utilities { Bitmap bitmap = createIconBitmap(icon, context, scale); if (Utilities.ATLEAST_LOLLIPOP && user != null && !UserHandleCompat.myUserHandle().equals(user)) { - BitmapDrawable drawable = new BitmapDrawable(context.getResources(), bitmap); + BitmapDrawable drawable = new FixedSizeBitmapDrawable(bitmap); Drawable badged = context.getPackageManager().getUserBadgedIcon( drawable, user.getUser()); if (badged instanceof BitmapDrawable) { @@ -805,4 +805,26 @@ public final class Utilities { PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); return ATLEAST_LOLLIPOP && powerManager.isPowerSaveMode(); } + + /** + * An extension of {@link BitmapDrawable} which returns the bitmap pixel size as intrinsic size. + * This allows the badging to be done based on the action bitmap size rather than + * the scaled bitmap size. + */ + private static class FixedSizeBitmapDrawable extends BitmapDrawable { + + public FixedSizeBitmapDrawable(Bitmap bitmap) { + super(null, bitmap); + } + + @Override + public int getIntrinsicHeight() { + return getBitmap().getWidth(); + } + + @Override + public int getIntrinsicWidth() { + return getBitmap().getWidth(); + } + } }