summaryrefslogtreecommitdiffstats
path: root/core/java/android/gesture
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-05-29 13:54:39 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-05-29 13:54:39 -0700
commit7a8c437723a50b171d0cd97cb17886b28dffce92 (patch)
tree2ead5ff3b673352beed16d1747f10332ef70689b /core/java/android/gesture
parentd1353cc4f14a9bed49b04b0c3a6fd57784102465 (diff)
parentd1c67d42abdf41d10c9a7589da1e0088af1e123a (diff)
downloadframeworks_base-7a8c437723a50b171d0cd97cb17886b28dffce92.zip
frameworks_base-7a8c437723a50b171d0cd97cb17886b28dffce92.tar.gz
frameworks_base-7a8c437723a50b171d0cd97cb17886b28dffce92.tar.bz2
Merge change 2737 into donut
* changes: Fixes #1878499.
Diffstat (limited to 'core/java/android/gesture')
-rwxr-xr-xcore/java/android/gesture/GestureOverlayView.java100
-rw-r--r--core/java/android/gesture/GestureStroke.java2
2 files changed, 56 insertions, 46 deletions
diff --git a/core/java/android/gesture/GestureOverlayView.java b/core/java/android/gesture/GestureOverlayView.java
index c21cc55..cc58f1d 100755
--- a/core/java/android/gesture/GestureOverlayView.java
+++ b/core/java/android/gesture/GestureOverlayView.java
@@ -75,7 +75,7 @@ public class GestureOverlayView extends FrameLayout {
private int mInvalidateExtraBorder = 10;
private int mGestureStrokeType = GESTURE_STROKE_TYPE_SINGLE;
- private float mGestureStrokeLengthThreshold = 30.0f;
+ private float mGestureStrokeLengthThreshold = 50.0f;
private float mGestureStrokeSquarenessTreshold = 0.275f;
private float mGestureStrokeAngleThreshold = 40.0f;
@@ -554,39 +554,39 @@ public class GestureOverlayView extends FrameLayout {
mX = x;
mY = y;
- }
- mStrokeBuffer.add(new GesturePoint(x, y, event.getEventTime()));
+ mStrokeBuffer.add(new GesturePoint(x, y, event.getEventTime()));
- if (mHandleGestureActions && !mIsGesturing) {
- mTotalLength += (float) Math.sqrt(dx * dx + dy * dy);
+ if (mHandleGestureActions && !mIsGesturing) {
+ mTotalLength += (float) Math.sqrt(dx * dx + dy * dy);
- if (mTotalLength > mGestureStrokeLengthThreshold) {
- final OrientedBoundingBox box =
- GestureUtilities.computeOrientedBoundingBox(mStrokeBuffer);
+ if (mTotalLength > mGestureStrokeLengthThreshold) {
+ final OrientedBoundingBox box =
+ GestureUtilities.computeOrientedBoundingBox(mStrokeBuffer);
- float angle = Math.abs(box.orientation);
- if (angle > 90) {
- angle = 180 - angle;
- }
+ float angle = Math.abs(box.orientation);
+ if (angle > 90) {
+ angle = 180 - angle;
+ }
- if (box.squareness > mGestureStrokeSquarenessTreshold ||
- (mOrientation == ORIENTATION_VERTICAL ?
- angle < mGestureStrokeAngleThreshold :
- angle > mGestureStrokeAngleThreshold)) {
+ if (box.squareness > mGestureStrokeSquarenessTreshold ||
+ (mOrientation == ORIENTATION_VERTICAL ?
+ angle < mGestureStrokeAngleThreshold :
+ angle > mGestureStrokeAngleThreshold)) {
- mIsGesturing = true;
- setCurrentColor(mCertainGestureColor);
+ mIsGesturing = true;
+ setCurrentColor(mCertainGestureColor);
+ }
}
}
- }
- // pass the event to handlers
- final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
- final int count = listeners.size();
- for (int i = 0; i < count; i++) {
- listeners.get(i).onGesture(this, event);
- }
+ // pass the event to handlers
+ final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
+ final int count = listeners.size();
+ for (int i = 0; i < count; i++) {
+ listeners.get(i).onGesture(this, event);
+ }
+ }
return areaToRefresh;
}
@@ -594,35 +594,45 @@ public class GestureOverlayView extends FrameLayout {
private void touchUp(MotionEvent event, boolean cancel) {
mIsListeningForGestures = false;
- // add the stroke to the current gesture
- mCurrentGesture.addStroke(new GestureStroke(mStrokeBuffer));
- mStrokeBuffer.clear();
+ // A gesture wasn't started or was cancelled
+ if (mCurrentGesture != null) {
+ // add the stroke to the current gesture
+ mCurrentGesture.addStroke(new GestureStroke(mStrokeBuffer));
+
+ if (!cancel) {
+ // pass the event to handlers
+ final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
+ int count = listeners.size();
+ for (int i = 0; i < count; i++) {
+ listeners.get(i).onGestureEnded(this, event);
+ }
- if (!cancel) {
- // pass the event to handlers
- final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
- int count = listeners.size();
- for (int i = 0; i < count; i++) {
- listeners.get(i).onGestureEnded(this, event);
- }
+ if (mHandleGestureActions) {
+ clear(mFadeEnabled, mIsGesturing);
+ }
+ } else {
+ cancelGesture(event);
- if (mHandleGestureActions) {
- clear(mFadeEnabled, mIsGesturing);
}
} else {
- // pass the event to handlers
- final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
- final int count = listeners.size();
- for (int i = 0; i < count; i++) {
- listeners.get(i).onGestureCancelled(this, event);
- }
-
- clear(false);
+ cancelGesture(event);
}
+ mStrokeBuffer.clear();
mIsGesturing = false;
}
+ private void cancelGesture(MotionEvent event) {
+ // pass the event to handlers
+ final ArrayList<OnGestureListener> listeners = mOnGestureListeners;
+ final int count = listeners.size();
+ for (int i = 0; i < count; i++) {
+ listeners.get(i).onGestureCancelled(this, event);
+ }
+
+ clear(false);
+ }
+
private void fireOnGesturePerformed() {
final ArrayList<OnGesturePerformedListener> actionListeners =
mOnGesturePerformedListeners;
diff --git a/core/java/android/gesture/GestureStroke.java b/core/java/android/gesture/GestureStroke.java
index 90faaed..598eb85 100644
--- a/core/java/android/gesture/GestureStroke.java
+++ b/core/java/android/gesture/GestureStroke.java
@@ -30,7 +30,7 @@ import java.util.ArrayList;
* A gesture stroke started on a touch down and ended on a touch up.
*/
public class GestureStroke {
- static final float TOUCH_TOLERANCE = 3;
+ static final float TOUCH_TOLERANCE = 8;
public final RectF boundingBox;