티스토리 뷰

필요한 것은 총 4가지 입니다.

  1. Layout 파일에 ProgressBar 배치
  2. ProgressBar에 적용할 애니메이션 xml 파일
  3. 애니메이션을 불러와서 progressBar에 적용하고 애니메이션을 실행하는 로직
  4. 적절한 때에 애니메이션을 취소해주는 로직

 

1. Layout 파일에 ProgressBar 배치

...
   <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateTint="@color/colorPrimary"
        android:indeterminateDrawable="@drawable/ic_nut_yellow"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
...

 

원하는 곳에다가 ProgressBar를 배치해줍니다.

본 글의 내용과는 상관없지만 indeterminateTint와 indeterminateDrawable을 통해서 ProgressBar를 대체할 이미지와 색을 지정할 수 있습니다.

 

2. ProgressBar에 적용할 애니메이션 xml 파일

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:pivotX = "50%"
        android:pivotY = "50%"
        android:fromDegrees = "0"
        android:toDegrees = "360"
        android:duration = "800"
        android:repeatCount="infinite"/>
</set>

저 같은 경우에는 중앙을 중심점으로 0.8초를 주기로 한 바퀴를 무한히 도는 애니메이션을 적용하였습니다.

 

3. 애니메이션을 불러와서 progressBar에 적용하고 애니메이션을 실행하는 로직

val clkRotate = AnimationUtils.loadAnimation(context, R.anim.rotate_clockwise)
progressBar.startAnimation(clkRotate)

 

4. 적절한 때에 애니메이션을 취소해주는 로직

progressBar.clearAnimation()
progressBar.visibility = View.INVISIBLE
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함