From ad69fa4c7447879697587c2ed537ac5edb1f82a4 Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 16 Jun 2017 11:46:57 -0700 Subject: [PATCH] Round popup corner clipping rotation center Before, it was possible for the rotation to occur around a slightly off-center pivot on certain devices when the display setting was set to "small." Bug: 62049689 Change-Id: I5f2f557a1170cc98c0a83b87749526a4d7ea73f1 --- src/com/android/launcher3/popup/PopupItemView.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/popup/PopupItemView.java b/src/com/android/launcher3/popup/PopupItemView.java index 05cadb671a..8ec051b304 100644 --- a/src/com/android/launcher3/popup/PopupItemView.java +++ b/src/com/android/launcher3/popup/PopupItemView.java @@ -100,22 +100,24 @@ public abstract class PopupItemView extends FrameLayout { // Clip children to this item's rounded corners. int cornerWidth = mRoundedCornerBitmap.getWidth(); int cornerHeight = mRoundedCornerBitmap.getHeight(); + int cornerCenterX = Math.round(cornerWidth / 2f); + int cornerCenterY = Math.round(cornerHeight / 2f); if ((mRoundedCorners & ROUNDED_TOP_CORNERS) != 0) { // Clip top left corner. mMatrix.reset(); canvas.drawBitmap(mRoundedCornerBitmap, mMatrix, mBackgroundClipPaint); // Clip top right corner. - mMatrix.setRotate(90, cornerWidth / 2, cornerHeight / 2); + mMatrix.setRotate(90, cornerCenterX, cornerCenterY); mMatrix.postTranslate(canvas.getWidth() - cornerWidth, 0); canvas.drawBitmap(mRoundedCornerBitmap, mMatrix, mBackgroundClipPaint); } if ((mRoundedCorners & ROUNDED_BOTTOM_CORNERS) != 0) { // Clip bottom right corner. - mMatrix.setRotate(180, cornerWidth / 2, cornerHeight / 2); + mMatrix.setRotate(180, cornerCenterX, cornerCenterY); mMatrix.postTranslate(canvas.getWidth() - cornerWidth, canvas.getHeight() - cornerHeight); canvas.drawBitmap(mRoundedCornerBitmap, mMatrix, mBackgroundClipPaint); // Clip bottom left corner. - mMatrix.setRotate(270, cornerWidth / 2, cornerHeight / 2); + mMatrix.setRotate(270, cornerCenterX, cornerCenterY); mMatrix.postTranslate(0, canvas.getHeight() - cornerHeight); canvas.drawBitmap(mRoundedCornerBitmap, mMatrix, mBackgroundClipPaint); }