2011-09-09 6 views
1

나는 안드로이드 응용 프로그램을 개발 중입니다. 사용자가 레이아웃에서 이미지를 터치하고 끌 때 전체 레이아웃을 회전해야합니다. 상대 레이아웃을 사용하고 있습니다. 이것은 하나의 이미지보기 및 드래그 버튼과 하나의 이미지를 배경으로 상대적 레이아웃을 가지고 있습니다. 드래그 버튼이 움직일 때 전체 상대 레이아웃을 회전해야합니다.안드로이드에서 전체 상대적 레이아웃을 회전하는 방법

회전 애니메이션을 시도하는 동안 해당 터치 이벤트가 감지되지 않으면 즉시 실행됩니다. 내 코드를 아래에 추가했습니다.

   anim = new RotateAnimation(0, -15f, Animation.RELATIVE_TO_SELF, 0f, 
       Animation.RELATIVE_TO_SELF, 0f); 

     anim.setInterpolator(new LinearInterpolator()); 

     anim.setDuration(700); 
     anim.setFillAfter(true); 

     anim.setAnimationListener(MainActivity.this); 


     rotationctrl.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     innerlayout.startAnimation(anim); 
     } 
     else if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       } 

       return true; 
      } 
     }); 

무엇이 문제입니까? 어디에서 실수를하고 .. 제발 도와주세요.

+0

"터치 이벤트가 감지되지 않으면 즉시 실행됩니다." – blessenm

+0

이미지를 터치하면 레이아웃이 회전하지만 이미지를 다시 터치해도 터치 이벤트가 수신되지 않습니다. – deepa

답변

1

Android 애니메이션은 애니메이션을 추가 할 때 UI 레이아웃의 픽셀 만 이동합니다. 애니메이션 후에 레이아웃을 실제로 업데이트하려면 애니메이션 리스너를 구현하고 수동으로 레이아웃을 업데이트해야합니다. 그렇지 않으면 이전 레이아웃이 여전히 픽셀 만 이동 된 상태로 남아있게됩니다.

레이아웃을 수동으로 업데이트하지 않으면 이미지와 응답 영역이 보이지 않더라도 이전 위치에있게됩니다.

관련 문제