diff options
| -rw-r--r-- | core/java/com/android/internal/widget/LocalImageResolver.java | 5 | ||||
| -rw-r--r-- | core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/core/java/com/android/internal/widget/LocalImageResolver.java b/core/java/com/android/internal/widget/LocalImageResolver.java index c9953513a97a..b866723954b5 100644 --- a/core/java/com/android/internal/widget/LocalImageResolver.java +++ b/core/java/com/android/internal/widget/LocalImageResolver.java @@ -198,6 +198,11 @@ public class LocalImageResolver { } final Size size = info.getSize(); + if (size.getWidth() <= maxWidth && size.getHeight() <= maxHeight) { + // We don't want to upscale images needlessly. + return; + } + if (size.getWidth() > size.getHeight()) { if (size.getWidth() > maxWidth) { final int targetHeight = size.getHeight() * maxWidth / size.getWidth(); diff --git a/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java b/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java index 033c3cae5beb..c63d18bfa531 100644 --- a/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java +++ b/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java @@ -195,6 +195,17 @@ public class LocalImageResolverTest { } @Test + public void resolveImage_smallBitmapIcon_passedSmallerSize_dontResize() { + Icon icon = Icon.createWithResource(mContext.getResources(), R.drawable.test32x24); + Drawable d = LocalImageResolver.resolveImage(icon, mContext, 600, 450); + + assertThat(d).isInstanceOf(BitmapDrawable.class); + BitmapDrawable bd = (BitmapDrawable) d; + assertThat(bd.getBitmap().getWidth()).isEqualTo(32); + assertThat(bd.getBitmap().getHeight()).isEqualTo(24); + } + + @Test public void resolveImage_largeBitmapIcon_passedSize_resizeToDefinedSize() { Icon icon = Icon.createWithBitmap( BitmapFactory.decodeResource(mContext.getResources(), R.drawable.big_a)); |