안드로이드 개발자 모임 게시판
(글 수 7,991)
ListView 순서변경 같은 경우는 Music 어플의 오픈소스가 있긴하지만 애니메이션 없고
스크롤이 부자연 스러운데다 마지막 아이템에 충돌했을때 위치 변경이 되지 않은 버그등이
있어서 직접 만들게 되었습니다.
ListView와 GridView를 각각 상속받아 만들었고 내부로직은 거의 비슷합니다.
만들면서 힘들었던 점은 스크롤 구현시에 뷰들이 재활용 되면서 기존에 가지고 있던
애니메이션의 fillAfter 값을 그대로 가지고 오기때문에 다시 해제해주는 작업이
제법 힘들었습니다. 좀더 쉽게 구현하려면 재활용을 안하게 하면 되지만 성능이
별로 좋지않아서 어떻게든 포함해서 구현했습니다.
허니컴부터는 DragAndDrop과 PropertyAnimator로 인해 좀더 간단히 구현 가능합니다.
2011.11.27 13:51:24
칭찬 감사합니다. ^^
애니메이션 구현은 처음에는 TranslateAnimation을 이용하다가 애니메이션 도중에 다시 되돌아 갈때 부자연스러워 Animation을 상속받아서 애니메이션 도중 되돌아가는 부분을 직접 구현했습니다.
뷰를 때어내 이동시킨것은 아니구요 클릭된 시점에 뷰를 Bitmap으로 캡쳐하고 BitmapDrawable로 래핑함과 동시에 뷰자체는 INVISIBLE로 가려 주고 dispatchDraw()에서 Drawable을 그립니다. Drawable 애니메이션에 관련된 부분은 ApiDemos/Graphics/AnimateDrawables 를 참고 하시면 됩니다.
우와 보기만 해도 현기증이 나네요.
위치를 어떻게 잡았는지 에니메이션 구현을 어떻게 했는지, 뷰 자체를 때어내서 이동 시킨 건지도 궁금하네요.
실제로 뷰나 다이나믹한 drawable 을 잘 다루는 소스를 찾아 내는 것도 어려운데 높은 완성도 수고하셨습니다.