OnTouch, onLongClick together in android

I will dynamically add images to the parent layout. And I do zoom in / out operations when adding an image. I want to remove the added onLongPress view.

img.setOnLongClickListener(longClickAction);
img.setOnTouchListener(touchAction); 

onLongPress:

OnLongClickListener longClickAction = new OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

        parentLayout.removeView((ImageView)v);
        return false;
    }
};

onTouch:

OnTouchListener touchAction = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        ImageView i = (ImageView)v;

        //perfrom zoom operation on touch of imageview
        zoom(i, event);
        return true; 

    }
};

Only Touch events work. What for? How do I have both? Where am I mistaken? What should I do to remove an added view? Please help me. Thanks in advance.

+5
source share
4 answers

onTouch , . , - onTouch , true onTouch ( , , ), onLongPress . , false onTouch

+13

@asenovm OnTouch() , , false onTouch(), , .

: , , OnLongClickListener() OnTouch(), OnLongClickListener() ,

Double Click :

int i = 0;
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    i++;
    Handler handler = new Handler();
    Runnable r = new Runnable() {

        @Override
        public void run() {
            i = 0;
        }
    };

    if (i == 1) {
        //Single click
        handler.postDelayed(r, 250);
    } else if (i == 2) {
        //Double click
        i = 0;
        ShowDailog();
    }


  }
});
+1

, .

boolean isMoving= false;

yourView.setOnTouchListener(new View.OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            isMoving = true;
            Log.i("isMoving:", "true");
        }
        if(event.getAction()==MotionEvent.ACTION_UP){
            isMoving=false;
            Log.i("isMoving:","false");
        }
        return false;
    }
});
yourView.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        if(!isMoving){
            //do onlongclick event here
        }
        return true;
    }
});;
-2

All Articles