뷰를 드래그 해서 위치를 변경한후 손을 때면 원래 위치로 애니매이션 효과를 주면서 이동하도록 구현했습니다.
문제는 애니매이션은 말그래도 효과라서 여전히 이미지가 드래그한 위치에 남아 있어서
애니매이션이 끝났을 떄 LayoutParams을 변경해서 원래 위치로 이동시켰는데..
이때 뷰가 한번 깜박이내요..
어떻게 해결할 수 있는 방법이 없을까요?
따로 View를 remove시키지는 않고요.. TransAnimation이 끝나면 현재 View가 위치한 좌표에서 원래 좌표로
View의 margin값을 변경하고 있습니다.
그런 문제때문에 허니컴이 나올때 ViewPropertyAnimator 가 나왔는데 애니메이션쪽이 뷰의 상태를 직접 바꾸지 못하는 문제 때문이죠
뷰의 애니메이션이 시작되면 Transfomation에 의해 Canvas의 변환만 한뒤 애니메이션이 끝나고 나면 다시 restore로 돌리는 현상때문인데 이걸 상태가 직접 바뀌는 애니메이션 형태로 바꾸려면 Animation 클래스를 를 상속 해서 applyTransfomation() 메서드에서 들어오는 Transfomation 인스턴스를 활용하지 말고 View를 직접 가지고 View의 layout 메서드로 직접 이동시켜주면 됩니다.
아니면 직접 Handler로 애니메이션을 구현하시면 되는데 보통 애니메이션이 자연스럽기 위해서는 60프레임 이기때문에 한장면을 1000/60 ms 로 생각하고 이 단위마다 Handler를 호출하면서 뷰를 이동시키는 방법이 있습니다. 이부분의 참고자료는 안드로이드 프레임워크 내의 SlidingDrawer.java를 참조하시면 됩니다.




애니메이션은 정말 모르지만 혹시 뷰를 지울때 윈도매니저의 removeView 메소드를 를쓰시는지요..
제가 겪은 증상이랑 비슷한건진 모르겠지만 예전에 그림파일 드래그 시키는 효과에서
마지막에 지워줄때 removeView를썼을때 그런 증상을 겪어본적이 있습니다
저같은 경우에는 removeViewImmediate를쓰니 해결되었습니다..
질문자분과 틀린경우일수도 있겠지만요 ;ㅅ;