안드로이드 AnimationDrawable 은 언제 시작하지?
![]() ![]() 2010/02/28 19:44 |
![](http://www.ziln.co.nz/shop/im4ges/loading_animation.gif)
public void start ()
Since: API Level 1Starts the animation, looping if necessary. This method has no effect if the animation is running.
친절히, AnimationDrawable 을 Window 에 완적히 붙기 전에 start 를 호출 하지 말라고 되어 있더군요. onCreate (onResume 도 마찬가지) 에서 호출해봤자 작동 하지 않으니, 힘 빼지 말고onWindowFocusChanged 에서 호출하라고 말입니다.
저 같은 경우, 애니매이션이 작동하지 않는 이유는 View 가 완전히 생성되기 전이라서 그럴꺼다 하고, 대충 예상은 하고 있었지만, 정확히 어떤 시점에서 start() API 를 호출 해야 하는지 알지 못해서, 애니매이션 시작을 아예 별도의 thread 에서 하거나, delayedMessage 를 사용 하는 등 여러가지 꽁수를 쓰기도 했습니다. 하지만 그럴 필요 없이 onWindowFocusChanged 시점에 호출하니 정상적으로 애니매이션이 움직였습니다. (부지런한 구글링만이 코드가 짧아지는 지름길 입니다.)
ps. 한 가지 더 조심할 점을 덧 붙이자면, start 중인 AnimationDrawable 은 다시금 start 를 호출해도 아무런 일을 하지 않기 때문에... onWindowFocusChanged() 가 호출 되기 전에, onCreate() 나 onResume() 에서 start 를 호출 하면, 애니매이션이 움직이지 않게 됩니다.
[출처] 안드로이드 AnimationDrawable 은 언제 시작하지?|작성자 휴우