2013-10-15 52 views
3

我有一個動畫,使按鈕按下觸摸。我希望它能夠保持按下,而用戶滾動屏幕。要做到這一點,我做了一個動畫,基本上只是保持圖像在ACTION_MOVE中調用相同的狀態。我的問題是,當我釋放按鈕時,不會調用ACTION_UP,這將觸發動畫,使按鈕恢復爲全尺寸並且不再按下。我有一個ScrollView中的整個相對佈局。我仍然不完全理解發生了什麼,但似乎ScrollView可能會「接管」onTouch事件。這是我的onTouchListener的代碼。action_up不會調用action_move後

s104.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       clearAnim(); 
       s104.setAnimation(animPressed); 
       s104.startAnimation(animPressed); 
       return true; 
      case MotionEvent.ACTION_MOVE: 
       s104.setAnimation(animDrag); 
       s104.startAnimation(animDrag); 
       return true; 
      case MotionEvent.ACTION_UP: 

       s104.setAnimation(animReleased); 
       s104.startAnimation(animReleased); 

       return true; 
      } 
      return false; 
     } 
    }); 

我找不出爲什麼ACTION_UP沒有被調用。任何幫助將不勝感激。

回答

4

我仍然不完全瞭解發生了什麼,但似乎ScrollView可能會「接管」onTouch事件。

這是正確的。你遇到的是ScrollView「接管」MotionEvent。您可以在OnTouchListener中捕獲此事件 - 爲MotionEvent.ACTION_CANCEL添加一個案例。在那裏你可以確定結果,如果用戶已經按下視圖(ACTION_DOWN)並隨後向下滾動。