Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82392e84 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 2402 into donut

* changes:
  Cleanup Gestures API and make it easier to use in 3rd party apps. Also fix the events processing in the gestures overlay mechanism. Give better control of the various properties of the overlay through XML attributes.
parents 04561a55 82f3495b
Loading
Loading
Loading
Loading
+345 −260
Original line number Diff line number Diff line
@@ -3529,61 +3529,6 @@
 visibility="public"
>
</field>
<field name="donut_resource_pad34"
 type="int"
 transient="false"
 volatile="false"
 value="16843390"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="donut_resource_pad35"
 type="int"
 transient="false"
 volatile="false"
 value="16843389"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="donut_resource_pad36"
 type="int"
 transient="false"
 volatile="false"
 value="16843388"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="donut_resource_pad37"
 type="int"
 transient="false"
 volatile="false"
 value="16843387"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="donut_resource_pad38"
 type="int"
 transient="false"
 volatile="false"
 value="16843386"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="donut_resource_pad4"
 type="int"
 transient="false"
@@ -3947,6 +3892,17 @@
 visibility="public"
>
</field>
<field name="eventsInterceptionEnabled"
 type="int"
 transient="false"
 volatile="false"
 value="16843390"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="excludeFromRecents"
 type="int"
 transient="false"
@@ -4420,6 +4376,50 @@
 visibility="public"
>
</field>
<field name="gestureStrokeAngleThreshold"
 type="int"
 transient="false"
 volatile="false"
 value="16843389"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="gestureStrokeLengthThreshold"
 type="int"
 transient="false"
 volatile="false"
 value="16843387"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="gestureStrokeSquarenessThreshold"
 type="int"
 transient="false"
 volatile="false"
 value="16843388"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="gestureStrokeType"
 type="int"
 transient="false"
 volatile="false"
 value="16843386"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="gestureStrokeWidth"
 type="int"
 transient="false"
@@ -46303,6 +46303,70 @@
<parameter name="color" type="int">
</parameter>
</method>
<method name="toPath"
 return="android.graphics.Path"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="toPath"
 return="android.graphics.Path"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="path" type="android.graphics.Path">
</parameter>
</method>
<method name="toPath"
 return="android.graphics.Path"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="width" type="int">
</parameter>
<parameter name="height" type="int">
</parameter>
<parameter name="edge" type="int">
</parameter>
<parameter name="numSample" type="int">
</parameter>
</method>
<method name="toPath"
 return="android.graphics.Path"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="path" type="android.graphics.Path">
</parameter>
<parameter name="width" type="int">
</parameter>
<parameter name="height" type="int">
</parameter>
<parameter name="edge" type="int">
</parameter>
<parameter name="numSample" type="int">
</parameter>
</method>
<method name="writeToParcel"
 return="void"
 abstract="false"
@@ -46543,7 +46607,7 @@
</field>
</class>
<class name="GestureOverlayView"
 extends="android.view.View"
 extends="android.widget.FrameLayout"
 abstract="false"
 static="false"
 final="false"
@@ -46599,7 +46663,7 @@
<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener">
</parameter>
</method>
<method name="cancelFadingOut"
<method name="addOnGesturePerformedListener"
 return="void"
 abstract="false"
 native="false"
@@ -46609,8 +46673,10 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener">
</parameter>
</method>
<method name="clear"
<method name="cancelClearAnimation"
 return="void"
 abstract="false"
 native="false"
@@ -46620,11 +46686,20 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="fadeOut" type="boolean">
</parameter>
</method>
<method name="getCurrentGesture"
 return="android.gesture.Gesture"
<method name="cancelGesture"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="clear"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
@@ -46633,6 +46708,8 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="animated" type="boolean">
</parameter>
</method>
<method name="getCurrentStroke"
 return="java.util.ArrayList&lt;android.gesture.GesturePoint&gt;"
@@ -46645,6 +46722,17 @@
 visibility="public"
>
</method>
<method name="getGesture"
 return="android.gesture.Gesture"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getGestureColor"
 return="int"
 abstract="false"
@@ -46656,7 +46744,51 @@
 visibility="public"
>
</method>
<method name="getGestureStroke"
<method name="getGestureStrokeAngleThreshold"
 return="float"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getGestureStrokeLengthThreshold"
 return="float"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getGestureStrokeSquarenessTreshold"
 return="float"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getGestureStrokeType"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getGestureStrokeWidth"
 return="float"
 abstract="false"
 native="false"
@@ -46678,8 +46810,19 @@
 visibility="public"
>
</method>
<method name="processEvent"
 return="void"
<method name="isEventsInterceptionEnabled"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="isGesturing"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
@@ -46688,8 +46831,6 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="event" type="android.view.MotionEvent">
</parameter>
</method>
<method name="removeAllOnGestureListeners"
 return="void"
@@ -46702,6 +46843,17 @@
 visibility="public"
>
</method>
<method name="removeAllOnGesturePerformedListeners"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="removeOnGestureListener"
 return="void"
 abstract="false"
@@ -46715,7 +46867,33 @@
<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener">
</parameter>
</method>
<method name="setCurrentGesture"
<method name="removeOnGesturePerformedListener"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener">
</parameter>
</method>
<method name="setEventsInterceptionEnabled"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="enabled" type="boolean">
</parameter>
</method>
<method name="setGesture"
 return="void"
 abstract="false"
 native="false"
@@ -46741,7 +46919,7 @@
<parameter name="color" type="int">
</parameter>
</method>
<method name="setGestureDrawingColor"
<method name="setGestureStrokeAngleThreshold"
 return="void"
 abstract="false"
 native="false"
@@ -46751,10 +46929,10 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="color" type="int">
<parameter name="gestureStrokeAngleThreshold" type="float">
</parameter>
</method>
<method name="setGestureStroke"
<method name="setGestureStrokeLengthThreshold"
 return="void"
 abstract="false"
 native="false"
@@ -46764,7 +46942,46 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="gestureStroke" type="float">
<parameter name="gestureStrokeLengthThreshold" type="float">
</parameter>
</method>
<method name="setGestureStrokeSquarenessTreshold"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="gestureStrokeSquarenessTreshold" type="float">
</parameter>
</method>
<method name="setGestureStrokeType"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="gestureStrokeType" type="int">
</parameter>
</method>
<method name="setGestureStrokeWidth"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="gestureStrokeWidth" type="float">
</parameter>
</method>
<method name="setUncertainGestureColor"
@@ -46780,6 +46997,28 @@
<parameter name="color" type="int">
</parameter>
</method>
<field name="GESTURE_STROKE_TYPE_MULTIPLE"
 type="int"
 transient="false"
 volatile="false"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="GESTURE_STROKE_TYPE_SINGLE"
 type="int"
 transient="false"
 volatile="false"
 value="0"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
<interface name="GestureOverlayView.OnGestureListener"
 abstract="true"
@@ -46849,6 +47088,29 @@
</parameter>
</method>
</interface>
<interface name="GestureOverlayView.OnGesturePerformedListener"
 abstract="true"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="onGesturePerformed"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="gesture" type="android.gesture.Gesture">
</parameter>
</method>
</interface>
<class name="GesturePoint"
 extends="java.lang.Object"
 abstract="false"
@@ -46942,6 +47204,17 @@
 visibility="public"
>
</method>
<method name="getPath"
 return="android.graphics.Path"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="toPath"
 return="android.graphics.Path"
 abstract="false"
@@ -47152,194 +47425,6 @@
>
</field>
</class>
<class name="TouchThroughGestureListener"
 extends="java.lang.Object"
 abstract="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<implements name="android.gesture.GestureOverlayView.OnGestureListener">
</implements>
<constructor name="TouchThroughGestureListener"
 type="android.gesture.TouchThroughGestureListener"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="model" type="android.view.View">
</parameter>
</constructor>
<constructor name="TouchThroughGestureListener"
 type="android.gesture.TouchThroughGestureListener"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="model" type="android.view.View">
</parameter>
<parameter name="stealEvents" type="boolean">
</parameter>
</constructor>
<method name="addOnGestureActionListener"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.gesture.TouchThroughGestureListener.OnGesturePerformedListener">
</parameter>
</method>
<method name="isGesturing"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="onGesture"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="event" type="android.view.MotionEvent">
</parameter>
</method>
<method name="onGestureCancelled"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="event" type="android.view.MotionEvent">
</parameter>
</method>
<method name="onGestureEnded"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="event" type="android.view.MotionEvent">
</parameter>
</method>
<method name="onGestureStarted"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="event" type="android.view.MotionEvent">
</parameter>
</method>
<method name="removeOnGestureActionListener"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.gesture.TouchThroughGestureListener.OnGesturePerformedListener">
</parameter>
</method>
<method name="setGestureType"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="type" type="int">
</parameter>
</method>
<field name="MULTIPLE_STROKE"
 type="int"
 transient="false"
 volatile="false"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="SINGLE_STROKE"
 type="int"
 transient="false"
 volatile="false"
 value="0"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
<interface name="TouchThroughGestureListener.OnGesturePerformedListener"
 abstract="true"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="onGesturePerformed"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="overlay" type="android.gesture.GestureOverlayView">
</parameter>
<parameter name="gesture" type="android.gesture.Gesture">
</parameter>
</method>
</interface>
</package>
<package name="android.graphics"
>
+39 −0
Original line number Diff line number Diff line
@@ -57,6 +57,11 @@ public class Gesture implements Parcelable {
        mGestureID = GESTURE_ID_BASE + sGestureCount++;
    }

    void recycle() {
        mStrokes.clear();
        mBoundingBox.setEmpty();
    }

    /**
     * @return all the strokes of the gesture
     */
@@ -111,6 +116,40 @@ public class Gesture implements Parcelable {
        return mBoundingBox;
    }

    public Path toPath() {
        return toPath(null);
    }

    public Path toPath(Path path) {
        if (path == null) path = new Path();

        final ArrayList<GestureStroke> strokes = mStrokes;
        final int count = strokes.size();

        for (int i = 0; i < count; i++) {
            path.addPath(strokes.get(i).getPath());
        }

        return path;
    }

    public Path toPath(int width, int height, int edge, int numSample) {
        return toPath(null, width, height, edge, numSample);
    }

    public Path toPath(Path path, int width, int height, int edge, int numSample) {
        if (path == null) path = new Path();

        final ArrayList<GestureStroke> strokes = mStrokes;
        final int count = strokes.size();

        for (int i = 0; i < count; i++) {
            path.addPath(strokes.get(i).toPath(width - 2 * edge, height - 2 * edge, numSample));
        }

        return path;
    }

    /**
     * Set the id of the gesture
     * 
+363 −201

File changed.

Preview size limit exceeded, changes collapsed.

+35 −24
Original line number Diff line number Diff line
@@ -89,6 +89,21 @@ public class GestureStroke {
     */
    void draw(Canvas canvas, Paint paint) {
        if (mCachedPath == null) {
            makePath();
        }

        canvas.drawPath(mCachedPath, paint);
    }

    public Path getPath() {
        if (mCachedPath == null) {
            makePath();
        }

        return mCachedPath;
    }

    private void makePath() {
        final float[] localPoints = points;
        final int count = localPoints.length;

@@ -108,7 +123,7 @@ public class GestureStroke {
            } else {
                float dx = Math.abs(x - mX);
                float dy = Math.abs(y - mY);
                    if (dx >= 3 || dy >= 3) {
                if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
                    path.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
                    mX = x;
                    mY = y;
@@ -119,9 +134,6 @@ public class GestureStroke {
        mCachedPath = path;
    }

        canvas.drawPath(mCachedPath, paint);
    }

    /**
     * Convert the stroke to a Path based on the number of points
     * 
@@ -158,8 +170,7 @@ public class GestureStroke {
            } else {
                float dx = Math.abs(x - mX);
                float dy = Math.abs(y - mY);
                if (dx >= TOUCH_TOLERANCE ||
                        dy >= TOUCH_TOLERANCE) {
                if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
                    path.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
                    mX = x;
                    mY = y;
+1 −1
Original line number Diff line number Diff line
@@ -388,7 +388,7 @@ final class GestureUtilities {
        } else { // -PI<alpha<PI
            angle = (float) Math.atan2(targetVector[1], targetVector[0]);
            angle = (float) (180 * angle / Math.PI);
            android.graphics.Matrix trans = new android.graphics.Matrix();
            Matrix trans = new Matrix();
            trans.setRotate(-angle);
            trans.mapPoints(points);
        }
Loading