2013-01-09 48 views
0

我有一個ImageButton,當我按下它並保持我的手指向下時它變得不可見,當我擡起手指時它就會變得可見。MotionEvent無法在按鈕外工作

但是,當我按下按鈕,而我的手指向下移動我是遠離它,擡起它,它不會成爲可見的再

的代碼看起來像這樣

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

您必須使用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; 
+0

喔我使用ACTION_CANCEL在結束和沒有工作,但是當我在ACTION_UP之前移動它,它工作,你可能想更新你的答案告訴把它作爲第一個案件,所以有同樣問題的人可能會更容易:) – DoubleP90

+0

我已經在我的答案插入了一些代碼,不工作? – Budius

+0

是的,它工作,第一種情況ACTION_CANCEL,然後ACTION_UP,然後ACTION_DOWN,最後使用ACTION_CANCEL將不起作用 – DoubleP90