2013-10-15 3 views
3

버튼을 누르는 애니메이션이 있습니다. 사용자가 화면을 스크롤하는 동안이 버튼을 계속 누르고 있기를 원합니다. 이를 위해 기본적으로 ACTION_MOVE를 호출하는 이미지를 동일한 상태로 유지하는 애니메이션을 만들었습니다. 내 문제는 내가 버튼을 놓을 때 ACTION_UP이 호출되지 않아 애니메이션이 버튼을 다시 원래 크기로 가져오고 더 이상 보이지 않는 것입니다. ScrollView 내에 전체 상대 레이아웃이 있습니다. 나는 아직도 어떤 일이 일어나고 있는지 완전히 이해하지 못하고 있지만, ScrollView가 onTouch 이벤트를 "인계 (take over)"하고있는 것처럼 보입니다. 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 이벤트를 "인계 (take over)"하고있는 것처럼 보입니다.

맞습니다. 당신이 겪고있는 것은 MotionEvent을 "인계"하는 ScrollView입니다. OnTouchListener에서이 일정을 캡처 할 수 있습니다. MotionEvent.ACTION_CANCEL 사례를 추가하십시오. 거기에서 사용자가보기 (ACTION_DOWN)를 누른 다음 아래로 스크롤하면 결과를 결정할 수 있습니다.