기존에는 AnimationDrawable을 사용해서 애니메이션을 만들었는데 사용하기 쉬운 반면
이미지가 커지면 로딩하는데 시간이 오래 걸리는 단점이 있습니다.
고민 하던 중에 ValueAnimator를 이용해서도 애니메이션을 만들 수 있다는 것을 알았고
이것은 이미지 개수나 사이즈에 상관없이 바로 수행이 되는 장점이 있습니다.
1. ValueAnimator valueAnimator = ValueAnimator.ofInt(valueStart, valueEnd).setDuration(duration);
ValueAnimator는 정해진 duration동안 onAnimationUpdate()를 호출하는데 parameter로 valueStart 부터 valueEnd 사이의 값을 넘겨줍니다.
2. onAnimationUpdate() 내에서 value값에 해당되는 imageview의 리소스를 교체해 줍니다.
3. 예제는 1초 동안 0~99의 값을 onAnimationUpdate()를 통해서 넘겨줍니다.
100개의 이미지가 있고 이것을 1초동안 play하기를 원한다면 이미지들을 배열로 만들어서 해당 value에 맞는 리소스를 교체해 주면 됩니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int valueStart = 0; | |
int valueEnd = 99; | |
int duration = 1000; | |
ValueAnimator valueAnimator = ValueAnimator.ofInt(valueStart, valueEnd).setDuration(duration); | |
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { | |
@Override | |
public void onAnimationUpdate(ValueAnimator valueAnimator) { | |
int value = (int) valueAnimator.getAnimatedValue(); | |
imageView.setImageResource(R.id.); | |
} | |
}); | |
valueAnimator.start(); |
댓글 없음:
댓글 쓰기