2013-10-15 2 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. Там вы можете определить результат, если пользователь нажал кнопку View (ACTION_DOWN) и впоследствии прокручивается вниз.

Смежные вопросы