Button 按住并释放按钮在android中不起作用

Button 按住并释放按钮在android中不起作用,button,ontouchlistener,touch-event,motionevent,Button,Ontouchlistener,Touch Event,Motionevent,我在安卓系统中有一个按钮。如果我按住这个按钮,一条消息应该会发出,同时发布另一条消息应该会发出,但有时仍然按住一个按钮,发布也会发生,发布消息也会发出 这是我的按钮代码:- open_curtain.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, M

我在安卓系统中有一个按钮。如果我按住这个按钮,一条消息应该会发出,同时发布另一条消息应该会发出,但有时仍然按住一个按钮,发布也会发生,发布消息也会发出

这是我的按钮代码:-

open_curtain.setOnTouchListener(new View.OnTouchListener() {
                              @Override
                              public boolean onTouch(View v, MotionEvent event) {

                                  switch (event.getAction() & MotionEvent.ACTION_MASK) {


                                          case MotionEvent.ACTION_DOWN:

                                             v.setSelected(true);

                                              DeviceDataClassTwo obj = (DeviceDataClassTwo) v.getTag();
                                              new ButtonOPressed(obj).execute();


                                              break;

                                          case MotionEvent.ACTION_UP:
                                           case MotionEvent.ACTION_CANCEL:
                                              //it comes here when i move my finger more then 100 pixels
                                               v.setSelected(false);


                                                  obj = (DeviceDataClassTwo) v.getTag();
                                                  new ButtonORelease(obj).execute();

                                              Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                                              vibe.vibrate(140);

                                              break;



                                  }

                                  return true;
                              }
                          });

在cod eyou发布的文章中,您有一个错误,两个“切换”案例没有正确地分开

您应该更改此选项:

case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
    .
    .
    .
    break;
对下列事项:

case MotionEvent.ACTION_UP:
    break;
case MotionEvent.ACTION_CANCEL:
    .
    .
    .
    break;

如果你要离开这个案例,“MOTIONEXPRECT.ACTRONGOUP”考虑把这个移动到“默认”的情况。“开关”应如下所示:

switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN:
        .
        .
        .
        break;
    case MotionEvent.ACTION_CANCEL:
        .
        .
        .
        break;
    default:
        break;