diff --git a/core/tests/coretests/src/android/graphics/drawable/IconTest.java b/core/tests/coretests/src/android/graphics/drawable/IconTest.java index b7a48c7e6825a..64fadc03f0bb7 100644 --- a/core/tests/coretests/src/android/graphics/drawable/IconTest.java +++ b/core/tests/coretests/src/android/graphics/drawable/IconTest.java @@ -16,6 +16,8 @@ package android.graphics.drawable; +import static com.google.common.truth.Truth.assertThat; + import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Region; @@ -107,6 +109,19 @@ public class IconTest extends AndroidTestCase { } } + @SmallTest + public void testScaleDownIfNecessary() throws Exception { + final Bitmap bm = Bitmap.createBitmap(4321, 78, Bitmap.Config.ARGB_8888); + final Icon ic = Icon.createWithBitmap(bm); + ic.scaleDownIfNecessary(40, 20); + + assertThat(bm.getWidth()).isEqualTo(4321); + assertThat(bm.getHeight()).isEqualTo(78); + + assertThat(ic.getBitmap().getWidth()).isLessThan(41); + assertThat(ic.getBitmap().getHeight()).isLessThan(21); + } + @SmallTest public void testWithAdaptiveBitmap() throws Exception { final Bitmap bm1 = Bitmap.createBitmap(150, 150, Bitmap.Config.ARGB_8888); diff --git a/graphics/java/android/graphics/drawable/Icon.java b/graphics/java/android/graphics/drawable/Icon.java index c329918afc27b..749b75941ef95 100644 --- a/graphics/java/android/graphics/drawable/Icon.java +++ b/graphics/java/android/graphics/drawable/Icon.java @@ -819,8 +819,10 @@ public final class Icon implements Parcelable { if (bitmapWidth > maxWidth || bitmapHeight > maxHeight) { float scale = Math.min((float) maxWidth / bitmapWidth, (float) maxHeight / bitmapHeight); - bitmap = Bitmap.createScaledBitmap(bitmap, (int) (scale * bitmapWidth), - (int) (scale * bitmapHeight), true /* filter */); + bitmap = Bitmap.createScaledBitmap(bitmap, + Math.max(1, (int) (scale * bitmapWidth)), + Math.max(1, (int) (scale * bitmapHeight)), + true /* filter */); } return bitmap; }