MotionEvent up在按钮之外不起作用

时间:2013-01-09 15:35:37

标签: android

我有一个ImageButton,当我按下它并保持手指向下它变得不可见时,当我抬起手指时它再次变得可见。

但是当我按下按钮并且我的手指向下移动时我将它移开并抬起它再次看不到它

代码看起来像这样

final ImageButton b=(ImageButton)findViewById(R.id.timer_btn);

        b.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {

                  case MotionEvent.ACTION_UP: 
                        b.setVisibility(View.VISIBLE);
                        Log.w("app", "Action up");
                        return true;
                  case MotionEvent.ACTION_DOWN: 
                        b.setVisibility(View.INVISIBLE);
                        Log.w("app", "Action down");

                       }
                    return false;
            }
        });

我尝试使用

case MotionEvent.ACTION_OUTSIDE: 
                            b.setVisibility(View.VISIBLE);
                            Log.w("app", "Action outside");

                           }

但它不起作用,无论是在按钮之外还是在

之内,它都会被调用

1 个答案:

答案 0 :(得分:1)

你必须使用ACTION_CANCEL。 我想ACTION_OUSIDE适用于实际屏幕之外。

系统将始终调用UP或CANCEL。

修改

我相信这应该有效:

              case MotionEvent.ACTION_CANCEL: 
              case MotionEvent.ACTION_UP: 
                    b.setVisibility(View.VISIBLE);
                    Log.w("app", "Action up");
                    return true;