diff options
author | Adam Powell <adamp@google.com> | 2013-09-05 13:44:45 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2013-09-05 13:44:45 -0700 |
commit | af1785f0b54bff4fcc6218619e34b9861e129cb9 (patch) | |
tree | e7a05a76cfa2b7a8467b4d1a43dd33d87d2c4f2f /core/java/android/view | |
parent | 49ee555f239c79871b661e5ff135061f26665e1c (diff) | |
download | frameworks_base-af1785f0b54bff4fcc6218619e34b9861e129cb9.zip frameworks_base-af1785f0b54bff4fcc6218619e34b9861e129cb9.tar.gz frameworks_base-af1785f0b54bff4fcc6218619e34b9861e129cb9.tar.bz2 |
Add a minimum timeout for double-tap in GestureDetector
Prevent noisy falsing. Minimum timeout is currently 40ms and can be
tuned for later. Consider un-hiding the ViewConfiguration query method
later.
Bug 10476944
Change-Id: Ib470735ec929b0b358fca4597e92dc81084e675f
Diffstat (limited to 'core/java/android/view')
-rw-r--r-- | core/java/android/view/GestureDetector.java | 5 | ||||
-rw-r--r-- | core/java/android/view/ViewConfiguration.java | 18 |
2 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java index 6bbfe0f..2351548 100644 --- a/core/java/android/view/GestureDetector.java +++ b/core/java/android/view/GestureDetector.java @@ -17,7 +17,6 @@ package android.view; import android.content.Context; -import android.os.Build; import android.os.Handler; import android.os.Message; @@ -202,6 +201,7 @@ public class GestureDetector { private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout(); private static final int TAP_TIMEOUT = ViewConfiguration.getTapTimeout(); private static final int DOUBLE_TAP_TIMEOUT = ViewConfiguration.getDoubleTapTimeout(); + private static final int DOUBLE_TAP_MIN_TIME = ViewConfiguration.getDoubleTapMinTime(); // constants for Message.what used by GestureHandler below private static final int SHOW_PRESS = 1; @@ -673,7 +673,8 @@ public class GestureDetector { return false; } - if (secondDown.getEventTime() - firstUp.getEventTime() > DOUBLE_TAP_TIMEOUT) { + final long deltaTime = secondDown.getEventTime() - firstUp.getEventTime(); + if (deltaTime > DOUBLE_TAP_TIMEOUT || deltaTime < DOUBLE_TAP_MIN_TIME) { return false; } diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index f8cb9c0..c3f064f 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -97,6 +97,13 @@ public class ViewConfiguration { private static final int DOUBLE_TAP_TIMEOUT = 300; /** + * Defines the minimum duration in milliseconds between the first tap's up event and + * the second tap's down event for an interaction to be considered a + * double-tap. + */ + private static final int DOUBLE_TAP_MIN_TIME = 40; + + /** * Defines the maximum duration in milliseconds between a touch pad * touch and release for a given touch to be considered a tap (click) as * opposed to a hover movement gesture. @@ -436,6 +443,17 @@ public class ViewConfiguration { } /** + * @return the minimum duration in milliseconds between the first tap's + * up event and the second tap's down event for an interaction to be considered a + * double-tap. + * + * @hide + */ + public static int getDoubleTapMinTime() { + return DOUBLE_TAP_MIN_TIME; + } + + /** * @return the maximum duration in milliseconds between a touch pad * touch and release for a given touch to be considered a tap (click) as * opposed to a hover movement gesture. |