안드로이드 개발 질문/답변
(글 수 45,052)
AnimationDrawable으로 프레임 애니메이션을 재생하구요
android:oneshot="true" 설정해서 한번만 재생되게 하였습니다.
그런데 이미 모든 프레임을 다 재생하고 애니메이션이 정지 하였는데도..
isRunning( ) 메서드로 값을 확인하면 true가 나오는데..
isRunning 메서드가 현재 애니메이션이 동작중인지 아닌지를 반환하는 함수 아닌가요?
애니메이션이 모든 프레임을 재생할때까지 기다린후 어떤 처리를 할려고 하는데..
막히네요..
트위닝 애니메이션에서는 start(), repeat() ,stop() 리스너를 설치할수있는데..
초보좀 도와주세요 ㅠㅠ
android:oneshot="true" 설정해서 한번만 재생되게 하였습니다.
그런데 이미 모든 프레임을 다 재생하고 애니메이션이 정지 하였는데도..
isRunning( ) 메서드로 값을 확인하면 true가 나오는데..
isRunning 메서드가 현재 애니메이션이 동작중인지 아닌지를 반환하는 함수 아닌가요?
애니메이션이 모든 프레임을 재생할때까지 기다린후 어떤 처리를 할려고 하는데..
막히네요..
트위닝 애니메이션에서는 start(), repeat() ,stop() 리스너를 설치할수있는데..
초보좀 도와주세요 ㅠㅠ
2015.02.04 18:17:48
public class InitAnimation extends AnimationDrawable {
public interface IAnimationFinishListener {
void onAnimationFinished();
}
private boolean finished = false;
private IAnimationFinishListener animationFinishListener;
public IAnimationFinishListener getAnimationFinishListener() {
return animationFinishListener;
}
public void setAnimationFinishListener(
IAnimationFinishListener animationFinishListener) {
this.animationFinishListener = animationFinishListener;
}
@Override
public boolean selectDrawable(int idx) {
boolean ret = super.selectDrawable(idx);
if ((idx != 0) && (idx == getNumberOfFrames() - 1)) {
if (!finished) {
finished = true;
if (animationFinishListener != null)
animationFinishListener.onAnimationFinished();
}
}
return ret;
}
}
이런식으로 커스텀 하나 만드셔서 해결하심이 좋을듯 싶습니다
private final class AfterAnimation implements Animation.AnimationListener {
public void onAnimationStart(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
}
이렇게 처리하면 되실듯 합니다.