【问题标题】:hold and release a button is not working in android按住并释放按钮在android中不起作用
【发布时间】:2017-07-20 12:37:37
【问题描述】:

我在 android 中有一个按钮。如果我按住按钮,一条消息应该发送,而在释放另一条消息时应该发送,但有时仍然按住一个按钮也会释放,并且释放消息正在发送。

这是我的按钮代码:-

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;
                              }
                          });

【问题讨论】:

    标签: button ontouchlistener touch-event motionevent


    【解决方案1】:

    在您发布的代码中,您有一个错误,两个“开关”案例没有正确分开。

    你应该改变这个:

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

    致以下:

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

    如果您要离开案例“MotionEvent.ACTION_UP”,请考虑将其移至“默认”案例。 “开关”应如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多