Round up ImageView translations to avoid nasty surprises.
Bug #2499812
Change-Id: If90acb7e13aa30e5a0a4e73782d033a5bb4e3264
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index c81a907..c77416b 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -769,8 +769,8 @@
} else if (ScaleType.CENTER == mScaleType) {
// Center bitmap in view, no scaling.
mDrawMatrix = mMatrix;
- mDrawMatrix.setTranslate((vwidth - dwidth) * 0.5f,
- (vheight - dheight) * 0.5f);
+ mDrawMatrix.setTranslate((int) ((vwidth - dwidth) * 0.5f + 0.5f),
+ (int) ((vheight - dheight) * 0.5f + 0.5f));
} else if (ScaleType.CENTER_CROP == mScaleType) {
mDrawMatrix = mMatrix;
@@ -786,7 +786,7 @@
}
mDrawMatrix.setScale(scale, scale);
- mDrawMatrix.postTranslate(dx, dy);
+ mDrawMatrix.postTranslate((int) (dx + 0.5f), (int) (dy + 0.5f));
} else if (ScaleType.CENTER_INSIDE == mScaleType) {
mDrawMatrix = mMatrix;
float scale;
@@ -800,8 +800,8 @@
(float) vheight / (float) dheight);
}
- dx = (vwidth - dwidth * scale) * 0.5f;
- dy = (vheight - dheight * scale) * 0.5f;
+ dx = (int) ((vwidth - dwidth * scale) * 0.5f + 0.5f);
+ dy = (int) ((vheight - dheight * scale) * 0.5f + 0.5f);
mDrawMatrix.setScale(scale, scale);
mDrawMatrix.postTranslate(dx, dy);