본 포스팅에서는 아래와 같은 안드로이드 ProgressBar에
애니메이션을 적용하여 부드럽게 증가/감소시키는 로직을 기록하겠다.
ObjectAnimator를 이용하면 ProgressBar에 애니메이션을 적용시킬수 있다.
private void setProgressAnimate(ProgressBar pb) {
ObjectAnimator animation = ObjectAnimator.ofInt(pb, "progress", pb.getProgress(), (int) ((time+30*1000)/1000/1.2));
animation.setDuration(1000);
animation.setInterpolator(new DecelerateInterpolator());
animation.start();
animation.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation, boolean isReverse) {
//애니메이션 종료 뒤에 타는 로직
}
});
time = time + 30 * 1000;
}
ObjectAnimator.ofInt(프로그레스바 객체, 현재 progress, 목표하는 progress) 형식으로 지정한 뒤
animation을 start시켜주기만 하면 된다.
animation의 setInterpolator 속성은 시작시점에서 종료시점까지의 가속화 옵션이다.
Interpolator | 설명 |
AccelerateDecelerate | 시작 시점에 가속, 종료 시점에 감속 |
Accelerate | 시작 시점에 가족 |
Anticipate | 시작 시점의 앞으로 조금 이동한 뒤 종료 시점에 도착 |
Overshoot | 종료 시점을 조금 초과하여 이동한 뒤 다시 되돌아와 종료 시점에 도착 |
Bounce | 종료 시점에 도착한 뒤 잠시 튀어오르는 애니메이션 표시 |
Cycle | 종료 시점에 도착한 뒤 시작 시점으로 돌아간 후, 다시 종료 시점으로 되돌아감 |
Decelerate | 종료 시점에 가속 |
Linear | 기본값으로 , 동일 속도로 시작 시점에서 종료 시점으로 이동 |
또 애니메이션 객체에 AnimatorListenerAdapter를 추가하여 원하는 시점에 다음 동작을 실행하도록 작업이 가능하다.
'JAVA > Android' 카테고리의 다른 글
[JAVA][Android] ImageView 영역에 원하는 radius값을 반영하는 setOutlineProvider (0) | 2022.06.21 |
---|---|
[JAVA][Android] ProgressBar 디자인 java 코드로 변경하기 (+ 변경 시 비가시화 처리 되는 현상 해결방법) (0) | 2022.05.26 |
[JAVA][Android] 로컬 파일(png, webp 등)의 Uri 추출하기 (0) | 2022.05.17 |
[JAVA][Android] webp 동영상(gif) 재생 횟수 정하기 (1) | 2022.05.17 |
[JAVA][Android] CountDownTimer 작동과 일시정지/재시작 (0) | 2022.05.16 |