From 9cfd25f16739548111ba8fc6ba8cd83010eccef6 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Sun, 24 Oct 2010 16:09:28 -0700 Subject: [PATCH 1/2] Adding distance threshold to initiate paging regardless of velocity. Change-Id: I275417ca69bcaa0b643dab7f3f552d973a194ce6 --- src/com/android/launcher2/PagedView.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index 4ccc4aeab0..9739b156fd 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -53,7 +53,9 @@ public abstract class PagedView extends ViewGroup { protected static final int INVALID_PAGE = -1; // the min drag distance for a fling to register, to prevent random page shifts - private static final int MIN_LENGTH_FOR_FLING = 50; + private static final int MIN_LENGTH_FOR_FLING = 25; + // The min drag distance to trigger a page shift (regardless of velocity) + private static final int MIN_LENGTH_FOR_MOVE = 200; private static final int PAGE_SNAP_ANIMATION_DURATION = 1000; protected static final float NANOTIME_DIV = 1000000000.0f; @@ -836,12 +838,17 @@ public abstract class PagedView extends ViewGroup { final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); int velocityX = (int) velocityTracker.getXVelocity(activePointerId); - boolean isfling = Math.abs(mDownMotionX - x) > MIN_LENGTH_FOR_FLING; + final int deltaX = (int) (x - mDownMotionX); + boolean isfling = Math.abs(deltaX) > MIN_LENGTH_FOR_FLING; + boolean isSignificantMove = Math.abs(deltaX) > MIN_LENGTH_FOR_MOVE; final int snapVelocity = mSnapVelocity; - if (isfling && velocityX > snapVelocity && mCurrentPage > 0) { + if ((isSignificantMove && deltaX > 0 || + (isfling && velocityX > snapVelocity)) && + mCurrentPage > 0) { snapToPageWithVelocity(mCurrentPage - 1, velocityX); - } else if (isfling && velocityX < -snapVelocity && + } else if ((isSignificantMove && deltaX < 0 || + (isfling && velocityX < -snapVelocity)) && mCurrentPage < getChildCount() - 1) { snapToPageWithVelocity(mCurrentPage + 1, velocityX); } else { From 3cf4c03125be60d56bff7eb82a1775ac46b919ed Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 26 Oct 2010 14:29:35 -0700 Subject: [PATCH 2/2] Don't build bitmaps when running in GL. Change-Id: I28c93256bca748be6a00698a6c41cbab5dd4a349 --- src/com/android/launcher2/CellLayout.java | 4 +++- src/com/android/launcher2/PagedViewCellLayout.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index 9bb10fab49..63da108d06 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -847,7 +847,9 @@ public class CellLayout extends ViewGroup implements Dimmable { final View view = getChildAt(i); view.setDrawingCacheEnabled(enabled); // Update the drawing caches - view.buildDrawingCache(true); + if (!view.isHardwareAccelerated()) { + view.buildDrawingCache(true); + } } } diff --git a/src/com/android/launcher2/PagedViewCellLayout.java b/src/com/android/launcher2/PagedViewCellLayout.java index 0a5a2ec290..b779a973d7 100644 --- a/src/com/android/launcher2/PagedViewCellLayout.java +++ b/src/com/android/launcher2/PagedViewCellLayout.java @@ -250,7 +250,9 @@ public class PagedViewCellLayout extends ViewGroup { final View view = getChildAt(i); view.setDrawingCacheEnabled(enabled); // Update the drawing caches - view.buildDrawingCache(true); + if (!view.isHardwareAccelerated()) { + view.buildDrawingCache(true); + } } }