0

I have 2 View and I want to do different thing using double click in those view. I have tried some solution but failed to get my answer. layout:

enter image description here

ontouchlistener:

View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
    switch (event.getAction()){
        case MotionEvent.ACTION_DOWN:
            x1=event.getX();
            y1=event.getY();
            break;
        case MotionEvent.ACTION_UP:
            x2=event.getX();
            y2=event.getY();
            float valueX = Math.abs(x1-x2);
            float valueY = Math.abs(y1-y2);
            if(x1>x2 && valueY<MIN_DISTANCE){
                Toast.makeText(tester.this, "LEFT", Toast.LENGTH_SHORT).show();
            }
            else if(x1<x2 && valueY<MIN_DISTANCE){
                Toast.makeText(tester.this, "RIGHT", Toast.LENGTH_SHORT).show();
            }
            else if(y1<y2 && valueX<MIN_DISTANCE){
                Toast.makeText(tester.this, "DOWN", Toast.LENGTH_SHORT).show();
            }
            else if(y2<y1 && valueX<MIN_DISTANCE){
                Toast.makeText(tester.this,"UP",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(tester.this, "NOT DETECTED", Toast.LENGTH_SHORT).show();
            }
        }
        return true;
    }
};

How do I use double click here? or is there any way to do this using getureDetector(not in full screen).

eyllanesc
  • 235,170
  • 19
  • 170
  • 241
Abu Saeed
  • 1,020
  • 8
  • 21
  • Add your trying solution here, then specify where you face the problem. – Nayan Sarder Aug 21 '20 at 16:22
  • I haven't found any solution. I can implement gesture on full screen and ontouchlisterner in part of screen such as view. But when I use OntouchListener, I am not able to implement double click. – Abu Saeed Aug 22 '20 at 04:17
  • 1
    Make sure your view is clickable and try this solution - https://stackoverflow.com/a/45054909/9545394 – Abhishek Kumar Aug 22 '20 at 05:51
  • Do I have to use 2 gesture detector for my 2 views? Can't I do this using one ? – Abu Saeed Aug 22 '20 at 09:19

1 Answers1

1

use 2 view and use gesture detector in those view.
inside oncreate:

        LeftGestureDetector = new GestureDetector(this,new LeftGestureListener());

outside oncreate:

    View.OnTouchListener touchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return LeftGestureDetector.onTouchEvent(event);
    }
};

gesture detector:

 class LeftGestureListener extends GestureDetector.SimpleOnGestureListener {
    @Override
    public boolean onDown(MotionEvent event) {
        Log.d("TAG","onDown: ");
        return true;
    }
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        //your code
        return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        long singleTapTime = System.currentTimeMillis();
        if(singleTapTime-doubleTapTimeLeft>DOUBLE_CLICK_TIME_INTERVAL) {
           //for single tap confirmed
        }
        return super.onSingleTapConfirmed(e);
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        //code here
        return true;
    }
}

do same thing for other view also

Abu Saeed
  • 1,020
  • 8
  • 21