diff --git a/api/current.xml b/api/current.xml
index 8140589..bb1f871 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -46799,6 +46799,17 @@
  visibility="public"
 >
 </method>
+<method name="getOrientation"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getUncertainGestureColor"
  return="int"
  abstract="false"
@@ -47008,6 +47019,19 @@
 <parameter name="gestureStrokeWidth" type="float">
 </parameter>
 </method>
+<method name="setOrientation"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="orientation" type="int">
+</parameter>
+</method>
 <method name="setUncertainGestureColor"
  return="void"
  abstract="false"
@@ -47043,6 +47067,28 @@
  visibility="public"
 >
 </field>
+<field name="ORIENTATION_HORIZONTAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ORIENTATION_VERTICAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <interface name="GestureOverlayView.OnGestureListener"
  abstract="true"
diff --git a/core/java/android/gesture/GestureOverlayView.java b/core/java/android/gesture/GestureOverlayView.java
index 4cdbd3e..1a82095 100755
--- a/core/java/android/gesture/GestureOverlayView.java
+++ b/core/java/android/gesture/GestureOverlayView.java
@@ -53,6 +53,9 @@
     public static final int GESTURE_STROKE_TYPE_SINGLE = 0;
     public static final int GESTURE_STROKE_TYPE_MULTIPLE = 1;
 
+    public static final int ORIENTATION_HORIZONTAL = 0;
+    public static final int ORIENTATION_VERTICAL = 1;
+
     private static final int FADE_ANIMATION_RATE = 16;
     private static final boolean GESTURE_RENDERING_ANTIALIAS = true;
     private static final boolean DITHER_FLAG = true;
@@ -76,6 +79,8 @@
     private float mGestureStrokeSquarenessTreshold = 0.275f;
     private float mGestureStrokeAngleThreshold = 40.0f;
 
+    private int mOrientation = ORIENTATION_VERTICAL;
+
     private final Rect mInvalidRect = new Rect();
     private final Path mPath = new Path();
 
@@ -150,6 +155,7 @@
                 mInterceptEvents);
         mFadeEnabled = a.getBoolean(R.styleable.GestureOverlayView_fadeEnabled,
                 mFadeEnabled);
+        mOrientation = a.getInt(R.styleable.GestureOverlayView_orientation, mOrientation);
 
         a.recycle();
 
@@ -176,6 +182,14 @@
         return mStrokeBuffer;
     }
 
+    public int getOrientation() {
+        return mOrientation;
+    }
+
+    public void setOrientation(int orientation) {
+        mOrientation = orientation;
+    }
+
     public void setGestureColor(int color) {
         mCertainGestureColor = color;
     }
@@ -415,7 +429,7 @@
     private boolean processEvent(MotionEvent event) {
         switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN:
-                touchStart(event);
+                touchDown(event);
                 invalidate();
                 return true;
             case MotionEvent.ACTION_MOVE:
@@ -445,7 +459,7 @@
         return false;
     }
 
-    private void touchStart(MotionEvent event) {
+    private void touchDown(MotionEvent event) {
         mIsListeningForGestures = true;
 
         float x = event.getX();
@@ -548,7 +562,9 @@
                 }
 
                 if (box.squareness > mGestureStrokeSquarenessTreshold ||
-                        angle < mGestureStrokeAngleThreshold) {
+                        (mOrientation == ORIENTATION_VERTICAL ?
+                                angle < mGestureStrokeAngleThreshold :
+                                angle > mGestureStrokeAngleThreshold)) {
 
                     mIsGesturing = true;
                     setCurrentColor(mCertainGestureColor);
@@ -606,7 +622,7 @@
             actionListeners.get(i).onGesturePerformed(GestureOverlayView.this,
                     mCurrentGesture);
         }
-    }    
+    }
 
     private class FadeOutRunnable implements Runnable {
         boolean fireActionPerformed;
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index b54802b..cda7431 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2109,6 +2109,9 @@
         <attr name="eventsInterceptionEnabled" format="boolean" />
         <!-- Defines whether the gesture will automatically fade out after being recognized. -->
         <attr name="fadeEnabled" format="boolean" />
+        <!-- Indicates whether horizontal (when the orientation is vertical) or vertical
+             (when orientation is horizontal) strokes automatically define a gesture. -->
+        <attr name="orientation" />
     </declare-styleable>
 
     <!-- ======================================= -->
