Skip to content Skip to sidebar Skip to footer

Add Double Tap Listener To My Custom Imageview

I want to detect double tap on my custom ImageView this is what I have tried but no success: public class TouchImageView extends ImageView { Matrix matrix; // We can

Solution 1:

At last found a working solution:

public class CustomImageView extends ImageView {
    private Context context;
    private GestureListener mGestureListener;
    private GestureDetector mGestureDetector;

    public CustomImageView(Context context) {
        super(context);
        sharedConstructing(context);
    }

    public CustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        sharedConstructing(context);
    }

    public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        sharedConstructing(context);
    }


    private void sharedConstructing(Context context) {
        super.setClickable(true);
        this.context = context;
        mGestureListener=new GestureListener();
        Log.e("Adding", "Listener:::");
        mGestureDetector = new GestureDetector( context, mGestureListener, null, true );
        setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                mGestureDetector.onTouchEvent(event);

                //..my other code logic
                invalidate();
                return true; // indicate event was handled
            }

        });
    }

    public class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDoubleTap( MotionEvent e ) {
            Log.e("onDoubleTap","onDoubleTap");
            return true;
        }
    }

}

Solution 2:

private static final long DOUBLE_CLICK_TIME_DELTA = 300;//milliseconds
long lastClickTime = 0;

img.setOnClickListener(new View.OnClickListener(){
   public void onClick(View view){
     long clickTime = System.currentTimeMillis();
        if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA){
            onDoubleClick(v);
            lastClickTime = 0;
        } else {
            onSingleClick(v);
        }
        lastClickTime = clickTime;
   }
});

Solution 3:

private static final long DOUBLE_CLICK_TIME_DELTA = 300;
long lastClickTime = 0;

case MotionEvent.ACTION_UP:
                    view.setAlpha((float) 1.0);
                    if(!isMoving){
                        long clickTime = System.currentTimeMillis();
                        if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA){
                            doubleClick = true;
                            System.out.println("-----------double");
                            lastClickTime = 0;
                        } else {
                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    if(!doubleClick){
                                        System.out.println("--------------single");
                                    }else
                                        doubleClick = false;
                                }
                            },350);
                        }
                        lastClickTime = clickTime;
                    }
                    break;

Post a Comment for "Add Double Tap Listener To My Custom Imageview"