diff options
-rw-r--r-- | core/java/android/content/res/CompatibilityInfo.java | 4 | ||||
-rw-r--r-- | core/java/android/util/DisplayMetrics.java | 16 | ||||
-rw-r--r-- | core/java/android/view/SurfaceView.java | 4 | ||||
-rw-r--r-- | core/java/android/view/ViewRoot.java | 12 | ||||
-rw-r--r-- | core/java/android/view/WindowManager.java | 8 | ||||
-rw-r--r-- | graphics/java/android/graphics/Rect.java | 8 |
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); } } } |