Fix window animation flash issue

The original logic cuts down the mShownPosition, causing 1 pixel offset,
sometimes this will cause flash.

To fix this, Use Math.round() instead.

google issue:
https://code.google.com/p/android/issues/detail?id=224185

Change-Id: I8a2fe55a2df6eaa9eda4ba78966a74ea492ab8ea
This commit is contained in:
Qiushi Han
2016-10-01 17:06:49 +08:00
parent e3d5fa1094
commit 32fed96632

View File

@@ -1033,7 +1033,7 @@ class WindowStateAnimator {
mDtDy = tmpFloats[Matrix.MSCALE_Y];
float x = tmpFloats[Matrix.MTRANS_X];
float y = tmpFloats[Matrix.MTRANS_Y];
mWin.mShownPosition.set((int) x, (int) y);
mWin.mShownPosition.set(Math.round(x), Math.round(y));
// Now set the alpha... but because our current hardware
// can't do alpha transformation on a non-opaque surface,
@@ -1129,7 +1129,7 @@ class WindowStateAnimator {
mDtDy = tmpFloats[Matrix.MSCALE_Y];
float x = tmpFloats[Matrix.MTRANS_X];
float y = tmpFloats[Matrix.MTRANS_Y];
mWin.mShownPosition.set((int) x, (int) y);
mWin.mShownPosition.set(Math.round(x), Math.round(y));
mShownAlpha = mAlpha;
} else {