diff options
author | Adam Cohen <adamcohen@google.com> | 2012-02-28 14:02:45 -0800 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2012-02-28 14:23:50 -0800 |
commit | f0777b9d7a8f4befa22a36f227a052616152108f (patch) | |
tree | 63265004cd09b4516266a0bdc90f8e18ea3bb51b | |
parent | d41fbf5680750e34335bba6b38298186c144a4b7 (diff) | |
download | android_packages_apps_Trebuchet-f0777b9d7a8f4befa22a36f227a052616152108f.tar.gz android_packages_apps_Trebuchet-f0777b9d7a8f4befa22a36f227a052616152108f.tar.bz2 android_packages_apps_Trebuchet-f0777b9d7a8f4befa22a36f227a052616152108f.zip |
Fixing drag and drop framerate regression in workspace
-> Animating the alpha on workspace during drop was slowing things down.
Instead we modify the alpha on the individual CellLayoutChildren objects
which have hardware layers, so modulating their alpha is cheap.
Change-Id: Id31e47cd05d593d2fef0ab28e15a9d4e11ed1aa1
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index e461a85bc..089301730 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -369,10 +369,14 @@ public class Workspace extends SmoothPagedView mLauncher.lockScreenOrientationOnLargeUI(); // Fade out the workspace slightly to highlight the currently dragging item - animate().alpha(mDragFadeOutAlpha) - .setInterpolator(new AccelerateInterpolator(1.5f)) - .setDuration(mDragFadeOutDuration) - .start(); + int count = getChildCount(); + for (int i = 0; i < count; i++) { + CellLayout cl = (CellLayout) getPageAt(i); + cl.getChildrenLayout().animate().alpha(mDragFadeOutAlpha) + .setInterpolator(new AccelerateInterpolator(1.5f)) + .setDuration(mDragFadeOutDuration) + .start(); + } } public void onDragEnd() { @@ -381,10 +385,14 @@ public class Workspace extends SmoothPagedView mLauncher.unlockScreenOrientationOnLargeUI(); // Fade the workspace back in after we have completed dragging - animate().alpha(1f) - .setInterpolator(new DecelerateInterpolator(1.5f)) - .setDuration(mDragFadeOutDuration) - .start(); + int count = getChildCount(); + for (int i = 0; i < count; i++) { + CellLayout cl = (CellLayout) getPageAt(i); + cl.getChildrenLayout().animate().alpha(1f) + .setInterpolator(new DecelerateInterpolator(1.5f)) + .setDuration(mDragFadeOutDuration) + .start(); + } } /** @@ -2026,7 +2034,8 @@ public class Workspace extends SmoothPagedView minSpanY = ((PendingAddWidgetInfo) d.dragInfo).minSpanY; } mTargetCell = findNearestArea((int) mDragViewVisualCenter[0], - (int) mDragViewVisualCenter[1], minSpanX, minSpanY, mDragTargetLayout, mTargetCell); + (int) mDragViewVisualCenter[1], minSpanX, minSpanY, mDragTargetLayout, + mTargetCell); if (willCreateUserFolder((ItemInfo) d.dragInfo, mDragTargetLayout, mTargetCell, true)) { return true; } @@ -2507,7 +2516,8 @@ public class Workspace extends SmoothPagedView final PendingAddWidgetInfo createInfo = new PendingAddWidgetInfo(widgetInfo, mimeType, data); mLauncher.addAppWidgetFromDrop(createInfo, - LauncherSettings.Favorites.CONTAINER_DESKTOP, mCurrentPage, null, null, pos); + LauncherSettings.Favorites.CONTAINER_DESKTOP, mCurrentPage, + null, null, pos); } else { // Show the widget picker dialog if there is more than one widget // that can handle this data type |