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 /src | |
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
Diffstat (limited to 'src')
-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 |