Android Open Source - HexNanoController_Android Enhanced Gesture Detector

From Project

Back to project page HexNanoController_Android.


The source code is released under:

Code license GNU GPL v2 Content license CC BY-NC-SA 4.0

If you think the Android project HexNanoController_Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.hexairbot.hexmini.gestures;
/*from  w  ww.ja  v  a2 s . c  o  m*/
import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;

 * EnhancedGestureDetector detects double tap gesture of second pointer when using multi touch in addition to
 * standard GestureDetecror gestures.
public class EnhancedGestureDetector extends GestureDetector
    // This is minimal time interval between touches
    private static final int DOUBLE_TAP_TIMESTAMP_DELTA = 200;
    // This is minimal distance between two touches.
    private static final int COORDINATE_DELTA = 50;
    // Time stamp of previous touch
    private long timestampLast;
    // Coordinates of previous touch
    private float xLast;
    private float yLast;
    private OnDoubleTapListener listener;
    public EnhancedGestureDetector(Context context, OnGestureListener listener)
        super(context, listener);

    public boolean onTouchEvent(MotionEvent ev)
        if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_UP) {
            long currTimestamp = ev.getEventTime();
            if (ev.getPointerCount() > 1) {
                if (currTimestamp - timestampLast < DOUBLE_TAP_TIMESTAMP_DELTA &&
                        Math.abs(ev.getX(1) - xLast) < COORDINATE_DELTA &&
                        Math.abs(ev.getY(1) - yLast) < COORDINATE_DELTA ) 
                    // Double tap detected. Calling listener.
                    if (listener != null) {
                        return listener.onDoubleTap(ev);
                xLast = ev.getX(1);
                yLast = ev.getY(1);                    
                timestampLast = ev.getEventTime();
        return super.onTouchEvent(ev);

    public void setOnDoubleTapListener(OnDoubleTapListener onDoubleTapListener)
        this.listener = onDoubleTapListener;

Java Source Code List