Idra
Idra

Reputation: 315

Looking for a listener that differentiates between up and down events

I apologise for the somewhat noobish question. I've tried googling it, searching this site and the android developer site, yet didn't manage to find an answer.

I'm looking for a listener that differentiates between up and down events. Currently I'm using OnTouchListener, but it gets triggered very fast, causing a noticable lag, even when I immediately return after an event that is not Down and Up.

I've also tried OnClickListener, but it seems to only get triggered when you lift your finger up, rather than have seperate events for down click and up click like I need.

Would appreciate some help,

Thanks!

Upvotes: 0

Views: 72

Answers (3)

Felipe R. Saruhashi
Felipe R. Saruhashi

Reputation: 1737

See this:

https://developer.android.com/training/graphics/opengl/touch.html

Override the following method on your activity, then you can treat each case, when the user touch the screen, and when he take of his finger.

 @Override
 public boolean onTouchEvent(MotionEvent e) {
    // MotionEvent reports input details from the touch screen
    // and other input controls. In this case, you are only
    // interested in events where the touch position changed.

    float x = e.getX();
    float y = e.getY();

    switch (e.getAction()) {
        case MotionEvent.ACTION_DOWN:
          // do your stuff
          break;
        case MotionEvent.ACTION_UP:
          // do your stuff
          break;
    }

    return true;
}

Upvotes: 1

Thorvald
Thorvald

Reputation: 3563

 YourBtn.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event){
                if(event.getAction() == MotionEvent.ACTION_UP){
                    //do stuff
                }
                else if(event.getAction() == MotionEvent.ACTION_DOWN){
                    //do stuff
                }
                else if(event.getAction() == MotionEvent.ACTION_CANCEL){
                    //do stuff
                }
                return true; //return false can be used it depends
            }
        });

P.S: it can be: a button, a textview, an imageview or any UI element

I strongly recommend to always add ACTION_CANCEL to avoid any misbehaviours or crashes

Upvotes: 1

kris larson
kris larson

Reputation: 30985

You should look at GestureDetector to simplify your touch event handling.

Upvotes: 0

Related Questions