2012-07-19 39 views
2

之外我有我自己的切換按鈕:的onTouchEvent,檢測ACTION_MOVE如果用戶放下手指控制

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    super.onTouchEvent(event); 

if (event.getAction() == MotionEvent.ACTION_MOVE) { 

     if (event.getY() >= getHeight()) { 
      if(isChecked()) { 
       this.setChecked(true); 
       this.performClick(); 
      } 
     } else if (event.getY() <= 0) { 
      if(!isChecked()) { 
       this.setChecked(false); 
       this.performClick(); 
      } 
     } 
    } 
    return true; 
} 

我想,如果用戶在我的切換按鈕將他的手指檢測和更換。但是,如果用戶在控件的外側按下手指,我無法檢測到onTouchEvent。 有什麼解決方案?

回答

0

您可以註冊爲OnTouchListener您的看法:

mOnTouchListener = new OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      final int action = motionEvent.getAction(); 
      boolean ret = false; 

      switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       ret = ...; 
       break; 
      case MotionEvent.ACTION_MOVE: 
       ret = ...; 
       break; 
      case MotionEvent.ACTION_UP: 
       ret = ...; 
       break; 
      } 

      return ret; 
     } 
    };  

通過什麼方法onTouch(View view, MotionEvent motionEvent)返回界定任何其他OnTouchListener()必須審覈該事件或no.You可以看到this question

編輯
創建two OnTouchListener()類和註冊每一個來觀察它的運動事件(一個爲您button,一個用於它的parent).Return true類巫婆審覈您的按鈕運動onTouch方法。事件,所以只有這個類審計按鈕的運動事件而不是父母監聽器。

+0

我有同樣的行爲。當我的手指在我的控制下移動時,我該如何檢測? – Tim 2012-07-19 09:37:27

+0

我設置了OnTouchListener在parrent視圖中放置我的切換按鈕 – Tim 2012-07-19 09:38:52

+0

方法返回始終查看我父級佈局的視圖 – Tim 2012-07-19 09:40:24