마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RotateAnimation으로 뷰를 회전시킨 후 터치 이벤트 발생방법

0 추천
RotateAnimation 사용하여 뷰를 회전시켜 위치를 바꾸었습니다. (뷰의 구조를 바꾸면 방법도 있지만 뷰를 버티컬로 회전시켜야되는 일이 있어 RotateAnimation를 사용하였습니다.) 회전시킨후 적절하게 원하는 위치로 이동도 되었는데 문제는 회전후의 터치이벤트가 발생하지 않는다는 점 입니다. 혹시나 해서 회전시키기 전의 위치를 눌러보니 터치이벤트가 발생하였는데요..

RotateAnimation로 뷰를 회전한후 터치이벤트를 발생하는 방법이 있을까요?

아니면 RotateAnimation말고 뷰의 rotate를 변경할 수 있는 방법이 있는지 궁금합니다.

(canvas를 사용하는 방법은 빼고요.)
lanevo (590 포인트) 님이 2013년 3월 5일 질문

3개의 답변

0 추천
로테이션은 안해봤고 트랜스레이트 애니메이션으로 이동시키고나서 애니메이션속성중에 셋어져스트뭐시기였나 ... 퇴근중이라 찾긴뭐하지만 속성중에 어떤거 true줘서 됬던걸로 기억합니다.
ankarkied (3,210 포인트) 님이 2013년 3월 5일 답변
setFillAfter(true); 이걸 말씀하시는 건가요??
이것은 rotate가 끝나고 원래 위치로 이동하지 않게 하는 함수입니다 ㅠㅠ --질문내용을 짧게 요약하면 ---- 이렇게 일자로 생긴 뷰를   |   이렇게 90도로 회전시킨후 회전된 뷰의 위치에 터치이벤트가 안먹는 현상인데요 ..회전하기 전의 포인트에서는 이벤트가 발생합니다. 트랜스레이트 애니메이션을 사용했을경우 터치이빈트가 이동한 위치에서도 정상적으로 발생한다는 얘기시죠? 제가 다시 찾아보겠습니다. 감사합니다.
0 추천
원래 애니메이션동작할때는 그리는것만 그렇게 보이고요 실제 터치점은 그대로라더군요

애니메이션이 끝났을때를 잡아서(애니메이션에 엔드리스너) 그리 실제 뷰를 이동시켜주셔야할거에요
건방진프로그래머 (26,630 포인트) 님이 2013년 3월 6일 답변
추가적으로 허니콤이후부터는 오브젝애니메이터라고 있는데
그건 실제 뷰까지 이동을 시켜준다는군요.. 서포트라이브러리로는
나인올드 라이브러리라고 허니콤이전에서도 사용하게 만들어주는게
있는데 2.3에서 실제로 이동시켜주는지 확인은 못해봤습니다.(듣기로는 안된다곤 들었지만 모르겠음)
0 추천
답변 달린것을 모두 해봤는데 결국 다 안되네요 ㅠ

 

자답입니다. 근본적인 해결은 아닙니다

api 11에서 view의 rotation을 사용하였습니다.

사용법은 android:rotation="digree" 단순히 애니메이션으로 돌리는게 아니고 뷰자체를 rotation해주네요

api 11 미만에서는 동작 안합니다. ㅠㅠ  경우에 따라 처리를 달리 해줘야 겠네요

 

답변 주신분들 갑사드립니다.
lanevo (590 포인트) 님이 2013년 3월 6일 답변
...