diff options
author | Mike Cleron <mcleron@google.com> | 2009-11-05 17:17:42 -0800 |
---|---|---|
committer | Mike Cleron <mcleron@google.com> | 2009-11-05 17:17:50 -0800 |
commit | 3a2b3f2be58843d26549fb0ec6c6533627c7cd19 (patch) | |
tree | 15d8e3949942c9b24e44fd270b9111a0c25b2838 /src/com/android/launcher2/Workspace.java | |
parent | 2d8047699768b1487323ee4603f91268df490d60 (diff) | |
download | android_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.tar.gz android_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.tar.bz2 android_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.zip |
If 3 screens are good 5 will be better
Diffstat (limited to 'src/com/android/launcher2/Workspace.java')
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index a0391d33e..a14a11f20 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -543,6 +543,14 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag if (restore) { canvas.restoreToCount(restoreCount); } + + onDrawScrollBars(canvas); + } + + @Override + protected int computeHorizontalScrollRange() { + final int count = getChildCount(); + return count == 0 ? getWidth() : (getChildAt(count - 1)).getRight(); } private float mScale = 1.0f; @@ -577,8 +585,11 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec); } + if (mFirstLayout) { + setHorizontalScrollBarEnabled(false); scrollTo(mCurrentScreen * width, 0); + setHorizontalScrollBarEnabled(true); updateWallpaperOffset(width * (getChildCount() - 1)); mFirstLayout = false; } @@ -725,7 +736,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag if (xMoved) { // Scroll if the user moved far enough along the X axis mTouchState = TOUCH_STATE_SCROLLING; - enableChildrenCache(); + enableChildrenCache(mCurrentScreen - 1, mCurrentScreen + 1); } // Either way, cancel any pending longpress if (mAllowLongPress) { @@ -781,9 +792,20 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag return mTouchState != TOUCH_STATE_REST; } - void enableChildrenCache() { + void enableChildrenCache(int fromScreen, int toScreen) { + if (fromScreen > toScreen) { + int temp = fromScreen; + fromScreen = toScreen; + toScreen = fromScreen; + } + final int count = getChildCount(); - for (int i = 0; i < count; i++) { + + fromScreen = Math.max(fromScreen, 0); + toScreen = Math.min(toScreen, count - 1); + + for (int i = fromScreen; i <= toScreen; i++) { + // Log.d("TAG", "enablingChildrenCache: " + i); final CellLayout layout = (CellLayout) getChildAt(i); layout.setChildrenDrawnWithCacheEnabled(true); layout.setChildrenDrawingCacheEnabled(true); @@ -852,6 +874,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag scrollBy(Math.min(availableToScroll, deltaX), 0); updateWallpaperOffset(); } + } else { + awakenScrollBars(); } } break; @@ -895,22 +919,26 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag void snapToScreen(int whichScreen) { if (!mScroller.isFinished()) return; + whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); + clearVacantCache(); - enableChildrenCache(); + enableChildrenCache(mCurrentScreen, whichScreen); - whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); - boolean changingScreens = whichScreen != mCurrentScreen; + + final int screenDelta = Math.abs(whichScreen - mCurrentScreen); mNextScreen = whichScreen; View focusedChild = getFocusedChild(); - if (focusedChild != null && changingScreens && focusedChild == getChildAt(mCurrentScreen)) { + if (focusedChild != null && screenDelta != 0 && focusedChild == getChildAt(mCurrentScreen)) { focusedChild.clearFocus(); } final int newX = whichScreen * getWidth(); final int delta = newX - mScrollX; - mScroller.startScroll(mScrollX, 0, delta, 0, Math.abs(delta) * 2); + final int duration = screenDelta * 300; + awakenScrollBars(duration); + mScroller.startScroll(mScrollX, 0, delta, 0, duration); invalidate(); } |