From d5fc4f309f650790f08748eb79b2e160e9f1c336 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 8 May 2017 18:08:38 -0700 Subject: [PATCH] Fix folder animation in RTL mode. Bug: 37905379 Change-Id: I3d837753b8fd4bcd2e2c59f1aa7c62457f037de3 --- .../android/launcher3/folder/FolderAnimationManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java index 578921f649..bee0bd418a 100644 --- a/src/com/android/launcher3/folder/FolderAnimationManager.java +++ b/src/com/android/launcher3/folder/FolderAnimationManager.java @@ -139,6 +139,7 @@ public class FolderAnimationManager { final Rect folderIconPos = new Rect(); float scaleRelativeToDragLayer = mLauncher.getDragLayer() .getDescendantRectRelativeToSelf(mFolderIcon, folderIconPos); + float initialSize = (mFolderIcon.mBackground.getRadius() * 2) * scaleRelativeToDragLayer; // Match size/scale of icons in the preview float previewScale = rule.scaleForItem(0, itemsInPreview.size()); @@ -156,6 +157,9 @@ public class FolderAnimationManager { // expected path to their final locations. ie. an icon should not move right, if it's final // location is to its left. This value is arbitrarily defined. int previewItemOffsetX = (int) (previewSize / 2); + if (Utilities.isRtl(mContext.getResources())) { + previewItemOffsetX = (int) (lp.width * initialScale - initialSize - previewItemOffsetX); + } final int paddingOffsetX = (int) ((mFolder.getPaddingLeft() + mContent.getPaddingLeft()) * initialScale); @@ -186,9 +190,6 @@ public class FolderAnimationManager { : finalTextColor); // Set up the reveal animation that clips the Folder. - float initialSize = (mFolderIcon.mBackground.getRadius() * 2 - + mPreviewBackground.getStrokeWidth()) * scaleRelativeToDragLayer; - int totalOffsetX = paddingOffsetX + previewItemOffsetX; Rect startRect = new Rect( Math.round(totalOffsetX / initialScale),