2012-05-04 60 views
0

我有一個組件,我想對內容進行各種更改並在觸摸時進行顯示,並在手指返回時恢復。一般來說,下面的工作,但如果用戶的手指在提升之前從組件本身移出,ACTION_UP從不會觸發,所以它永遠不會回到「向上」狀態。Android - 簡單的觸摸事件管理

public class MyComponent extends SomeLayout { 
    // ... stuff 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     final int action = event.getAction() & MotionEvent.ACTION_MASK; 
     switch (action) { 
     case MotionEvent.ACTION_DOWN : 
      // do something... 
      break;   
     case MotionEvent.ACTION_UP : 
      // do something else... 
      break;  
     } 
     return super.onTouchEvent(event); 
    } 
} 

這個ViewGroup有複雜的內容,並不適合StateDrawables。

有什麼建議嗎?

TYIA

回答

0

爲未來的搜索,答案是ACTION_CANCEL ...

public class MyComponent extends SomeLayout { 
    // ... stuff 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     final int action = event.getAction() & MotionEvent.ACTION_MASK; 
     switch (action) { 
     case MotionEvent.ACTION_DOWN : 
      // do something... 
      break;   
     case MotionEvent.ACTION_UP : 
     case MotionEvent.ACTION_CANCEL : 
      // do something else... 
      break;  
     } 
     return super.onTouchEvent(event); 
    } 
}