From 40209532bff0f83cbbdf408bb3f6e8142e7b02cd Mon Sep 17 00:00:00 2001 From: Masanori Ogino Date: Fri, 14 Jan 2011 13:24:20 +0900 Subject: [PATCH] Adjust mBiggerTouchSlopSquare to the suitable value If the scaling factor is larger than 1.0 (i.e. 1.5), then mTouchSlopSquare(576) is bigger than mBiggerTouchSlopSquare(400). The double tap condition should be bigger than a single tap's one. This causes the fail of the following CTS test cases in the device has over 240 density. - android.view.cts.GestureDetectorTest * testOnTouchEvent - android.view.cts.GestureDetector_SimpleOnGestureListenerTest * testSimpleOnGestureListener To fix this issue, I'll add a new public method ViewConfiguration#getScaledLargeTouchSlop() then the value returned from that method is used as a slop area of mLargeTouchSlop. Change-Id: I0e61c13670e1300be1ccf45a89ef89410496fb48 --- api/current.xml | 11 +++++++++++ core/java/android/view/GestureDetector.java | 11 ++++++----- core/java/android/view/ViewConfiguration.java | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) mode change 100644 => 100755 api/current.xml mode change 100644 => 100755 core/java/android/view/GestureDetector.java mode change 100644 => 100755 core/java/android/view/ViewConfiguration.java diff --git a/api/current.xml b/api/current.xml old mode 100644 new mode 100755 index 38fbe5c90d4d8..f5c9e284b606c --- a/api/current.xml +++ b/api/current.xml @@ -190704,6 +190704,17 @@ visibility="public" > + + mBiggerTouchSlopSquare) { + if (distance > mLargeTouchSlopSquare) { mAlwaysInBiggerTapRegion = false; } } else if ((Math.abs(scrollX) >= 1) || (Math.abs(scrollY) >= 1)) { diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java old mode 100644 new mode 100755 index 924c9d48f5d49..5397449f806b3 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -101,6 +101,12 @@ public class ViewConfiguration { */ private static final int TOUCH_SLOP = 16; + /** + * Distance a touch can wander before we think the user is the first touch + * in a sequence of double tap + */ + private static final int LARGE_TOUCH_SLOP = 18; + /** * Distance a touch can wander before we think the user is attempting a paged scroll * (in dips) @@ -156,6 +162,7 @@ public class ViewConfiguration { private final int mMaximumFlingVelocity; private final int mScrollbarSize; private final int mTouchSlop; + private final int mLargeTouchSlop; private final int mPagingTouchSlop; private final int mDoubleTapSlop; private final int mWindowTouchSlop; @@ -177,6 +184,7 @@ public class ViewConfiguration { mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY; mScrollbarSize = SCROLL_BAR_SIZE; mTouchSlop = TOUCH_SLOP; + mLargeTouchSlop = LARGE_TOUCH_SLOP; mPagingTouchSlop = PAGING_TOUCH_SLOP; mDoubleTapSlop = DOUBLE_TAP_SLOP; mWindowTouchSlop = WINDOW_TOUCH_SLOP; @@ -206,6 +214,7 @@ public class ViewConfiguration { mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f); mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f); mTouchSlop = (int) (density * TOUCH_SLOP + 0.5f); + mLargeTouchSlop = (int) (density * LARGE_TOUCH_SLOP + 0.5f); mPagingTouchSlop = (int) (density * PAGING_TOUCH_SLOP + 0.5f); mDoubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f); mWindowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f); @@ -366,6 +375,14 @@ public class ViewConfiguration { return mTouchSlop; } + /** + * @return Distance a touch can wander before we think the user is the first touch + * in a sequence of double tap + */ + public int getScaledLargeTouchSlop() { + return mLargeTouchSlop; + } + /** * @return Distance a touch can wander before we think the user is scrolling a full page * in dips