-
반응형
안녕하세요, 하루플입니다.
일반적으로 ProgressBar는 로딩이 얼마나 진행되었는지를 표시하거나 서버와의 통신이 지연되고 있을 때 사용합니다.
저는 이렇게 서버와의 통신 대신 유저의 경험치를 나타내는 방식을 프로그래스바를 이용해 구현했습니다.
이처럼 간단한 그래프를 프로그래스바로 쉽게 구현할 수 있습니다.
먼저 XML 코드에 ProgressBar UI를 만들어줍니다.
<ProgressBarandroid:id="@+id/progress_bar_exp"android:max="100"tools:progress="50"style="@style/Widget.AppCompat.ProgressBar.Horizontal"android:progressDrawable="@drawable/progress_bar_exp"android:layout_width="0dp"android:layout_height="15dp"app:layout_constraintTop_toTopOf="@id/tv_exp_title"app:layout_constraintBottom_toBottomOf="@id/tv_exp_title"app:layout_constraintStart_toEndOf="@id/tv_exp_title"app:layout_constraintEnd_toEndOf="parent"android:layout_marginEnd="30dp"android:layout_marginStart="5dp"/>저는 가로 그래프 형식으로 그려진 프로그래스바를 만들기 위해 ProgressBar.Horizontal 로 설정했습니다.
progressDrawble에 사용된 progress_bar_exp.xml 을 만들어주어야합니다.
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="10dp" /><solid android:color="@color/grey_3" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><corners android:radius="10dp" /><solid android:color="#B2CCFF" /></shape></clip></item><item android:id="@android:id/progress"><clip><shape><corners android:radius="10dp" /><solid android:color="@color/light_yellow" /></shape></clip></item></layer-list>위처럼 레이어 리스트를 활용해서 프로그래스바의 비활성화된 부분과 활성화된 부분의 색상을 설정해줍니다.
이후 저는 ProgressBar에 단순히 정지된 화면이 아니라 채워지는 애니메이션을 적용했습니다.
아래처럼 ObjectAnimator를 사용해 간단하게 progressBar 가 채워지는 효과를 적용할 수 있습니다.
ObjectAnimator.ofInt(binding.progressBarExp, "progress", exp.toInt()).setDuration(500).start()개발할 때는 간단하지만 앱 퀄리티는 크게 높일수 있는 내장 기능이라 많이 사용하면 좋을 것 같습니다!
반응형'개발 > Android' 카테고리의 다른 글
[Android | Kotlin] 테두리가 있는 TextView 개발하기 (1) 2023.06.07 [Android | Kotlin] Uri로 입력받은 이미지를 줄이는 방법 (0) 2023.06.04 심플 소프트웨어 : 소프트웨어 이해하기 (1) 2023.05.29 심플 소프트웨어 : 엔지니어링 팀에서 일하기 (0) 2023.05.28 심플 소프트웨어 : 프로그래머를 위한 원칙 (1) 2023.05.27 댓글