2013-10-15 46 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)并随后向下滚动。