summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/res/CompatibilityInfo.java4
-rw-r--r--core/java/android/util/DisplayMetrics.java16
-rw-r--r--core/java/android/view/SurfaceView.java4
-rw-r--r--core/java/android/view/ViewRoot.java12
-rw-r--r--core/java/android/view/WindowManager.java8
-rw-r--r--graphics/java/android/graphics/Rect.java8
6 files changed, 29 insertions, 23 deletions
diff --git a/core/java/android/content/res/CompatibilityInfo.java b/core/java/android/content/res/CompatibilityInfo.java
index 6e34cc8..2805bd5 100644
--- a/core/java/android/content/res/CompatibilityInfo.java
+++ b/core/java/android/content/res/CompatibilityInfo.java
@@ -342,8 +342,8 @@ public class CompatibilityInfo {
public static void updateCompatibleScreenFrame(DisplayMetrics dm, int orientation,
Rect outRect) {
int width = dm.widthPixels;
- int portraitHeight = (int) (DEFAULT_PORTRAIT_HEIGHT * dm.density);
- int portraitWidth = (int) (DEFAULT_PORTRAIT_WIDTH * dm.density);
+ int portraitHeight = (int) (DEFAULT_PORTRAIT_HEIGHT * dm.density + 0.5f);
+ int portraitWidth = (int) (DEFAULT_PORTRAIT_WIDTH * dm.density + 0.5f);
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
int xOffset = (width - portraitHeight) / 2 ;
outRect.set(xOffset, 0, xOffset + portraitHeight, portraitWidth);
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index bfab49d..38d99b3 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -136,15 +136,19 @@ public class DisplayMetrics {
int defaultHeight;
switch (orientation) {
case Configuration.ORIENTATION_LANDSCAPE: {
- defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density);
- defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density);
+ defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density +
+ 0.5f);
+ defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density +
+ 0.5f);
break;
}
case Configuration.ORIENTATION_PORTRAIT:
case Configuration.ORIENTATION_SQUARE:
default: {
- defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density);
- defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density);
+ defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density +
+ 0.5f);
+ defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density +
+ 0.5f);
break;
}
case Configuration.ORIENTATION_UNDEFINED: {
@@ -172,8 +176,8 @@ public class DisplayMetrics {
scaledDensity *= invertedRatio;
xdpi *= invertedRatio;
ydpi *= invertedRatio;
- widthPixels *= invertedRatio;
- heightPixels *= invertedRatio;
+ widthPixels = (int) (widthPixels * invertedRatio + 0.5f);
+ heightPixels = (int) (heightPixels * invertedRatio + 0.5f);
}
}
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index aa701af..fdc0c16 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -309,8 +309,8 @@ public class SurfaceView extends View {
// Use original size if the app specified the size of the view,
// and let the flinger to scale up.
if (mRequestedWidth <= 0 && mTranslator != null) {
- myWidth *= appScale;
- myHeight *= appScale;
+ myWidth = (int) (myWidth * appScale + 0.5f);
+ myHeight = (int) (myHeight * appScale + 0.5f);
mScaled = true;
} else {
mScaled = false;
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index 301d604..049b44f 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -907,7 +907,8 @@ public final class ViewRoot extends Handler implements ViewParent,
mHeight = frame.height();
if (initialized) {
- mGlCanvas.setViewport((int) (mWidth * appScale), (int) (mHeight * appScale));
+ mGlCanvas.setViewport((int) (mWidth * appScale + 0.5f),
+ (int) (mHeight * appScale + 0.5f));
}
boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
@@ -1237,7 +1238,7 @@ public final class ViewRoot extends Handler implements ViewParent,
if (fullRedrawNeeded) {
mAttachInfo.mIgnoreDirtyState = true;
- dirty.union(0, 0, (int) (mWidth * appScale), (int) (mHeight * appScale));
+ dirty.union(0, 0, (int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f));
}
if (DEBUG_ORIENTATION || DEBUG_DRAW) {
@@ -1749,7 +1750,8 @@ public final class ViewRoot extends Handler implements ViewParent,
if (mGlCanvas != null) {
float appScale = mAttachInfo.mApplicationScale;
mGlCanvas.setViewport(
- (int) (mWidth * appScale), (int) (mHeight * appScale));
+ (int) (mWidth * appScale + 0.5f),
+ (int) (mHeight * appScale + 0.5f));
}
}
}
@@ -2394,8 +2396,8 @@ public final class ViewRoot extends Handler implements ViewParent,
}
int relayoutResult = sWindowSession.relayout(
mWindow, params,
- (int) (mView.mMeasuredWidth * appScale),
- (int) (mView.mMeasuredHeight * appScale),
+ (int) (mView.mMeasuredWidth * appScale + 0.5f),
+ (int) (mView.mMeasuredHeight * appScale + 0.5f),
viewVisibility, insetsPending, mWinFrame,
mPendingContentInsets, mPendingVisibleInsets, mSurface);
if (restore) {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 6a26a31..c0be9e8 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -991,13 +991,13 @@ public interface WindowManager extends ViewManager {
* @hide
*/
public void scale(float scale) {
- x *= scale;
- y *= scale;
+ x = (int) (x * scale + 0.5f);
+ y = (int) (y * scale + 0.5f);
if (width > 0) {
- width *= scale;
+ width = (int) (width * scale + 0.5f);
}
if (height > 0) {
- height *= scale;
+ height = (int) (height * scale + 0.5f);
}
}
diff --git a/graphics/java/android/graphics/Rect.java b/graphics/java/android/graphics/Rect.java
index 50ab566..42a14ce 100644
--- a/graphics/java/android/graphics/Rect.java
+++ b/graphics/java/android/graphics/Rect.java
@@ -552,10 +552,10 @@ public final class Rect implements Parcelable {
*/
public void scale(float scale) {
if (scale != 1.0f) {
- left *= scale;
- top *= scale;
- right *= scale;
- bottom*= scale;
+ left = (int) (left * scale + 0.5f);
+ top = (int) (top * scale + 0.5f);
+ right = (int) (right * scale + 0.5f);
+ bottom = (int) (bottom * scale + 0.5f);
}
}
}