Java Android OnTouchListener干扰OnClickListener

Java Android OnTouchListener干扰OnClickListener,java,android,onclicklistener,ontouchlistener,Java,Android,Onclicklistener,Ontouchlistener,我有一个带有函数的活动,可以在其中创建一个新的ImageView。 我想移动ImageView,因此实现了一个新的OnTouchListener。这很好,但我还想添加一个长ClickListener,这是我的问题: 当我移动图像视图时,我的LongClickListener会启动一次 我能做些什么来解决这个问题 public ImageView neuesDefaultBild(int x, int y, int id){ ImageView iv=new ImageView(this

我有一个带有函数的活动,可以在其中创建一个新的
ImageView
。 我想移动
ImageView
,因此实现了一个新的
OnTouchListener
。这很好,但我还想添加一个
长ClickListener
,这是我的问题:

当我移动
图像视图时,我的
LongClickListener
会启动一次

我能做些什么来解决这个问题

public ImageView neuesDefaultBild(int x, int y, int id){

    ImageView iv=new ImageView(this);
    iv.setImageResource(R.drawable.usericon);
    iv.setId(id);
    iv.setX(x);
    iv.setY(y);
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.width=180;
    params.height=130;
    iv.setLayoutParams(params);

    iv.setLongClickable(true);
    iv.setFocusable(true);
    iv.setFocusableInTouchMode(true);
    iv.setEnabled(true);

    iv.setOnTouchListener(new View.OnTouchListener(){

        public boolean onTouch(View v, MotionEvent event) {

            boolean defaultResult = v.onTouchEvent(event);

            switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:
                break;

             case MotionEvent.ACTION_MOVE:

                 //Get the coords from the Event
                    int x_cord = (int) event.getRawX();
                    int y_cord = (int) event.getRawY();

                    v.setX(x_cord-90);
                    v.setY(y_cord-130);

                    return true;
             default:
                    return defaultResult;
             }
            return false;
        }
    });

    iv.setOnLongClickListener(new View.OnLongClickListener() {

        public boolean onLongClick(View v) {

            Toast.makeText(getApplicationContext(), "Long!!", Toast.LENGTH_SHORT).show();

            return false;
        }
    });
    return iv;
}

OnclickListener
可以使用
OnTouchListener
本身进行设置 只要插一面旗子就行了

    private int boolean onClick;

    switch (event.getAction())
    {
        case MotionEvent. ACTION_DOWN:
        {
               onClick = true;
               break ;
        }
        case MotionEvent. ACTION_MOVE:
        {                 
               onClick = false;                  
               break ;
        }
        case MotionEvent. ACTION_UP:
        {  
               if(onClick)
               {
                   //Call your own click listener 
               }
               break; 
        }  
   }
读这个