Developer Geek

안드로이드 원형 프로그레스바 in Kotlin 본문

안드로이드/View

안드로이드 원형 프로그레스바 in Kotlin

devGeek 2022. 6. 20. 09:00
반응형
 

안드로이드 프로그래스바

안드로이드 원형 프로그래스바 in Kotlin 안드로이드 프로그레스바란 Android ProgressBar in Kotlin ProgressBar는 사용자에게 작업 진행률을 나타내는 사용자 인터페이스 컨트롤이다. 예를 들면 인터넷에서

devgeek.tistory.com

Android ProgressBar in Kotlin

ProgressBar는 사용자에게 작업 진행률을 나타내는 사용자 인터페이스 컨트롤이다. 예를 들면 인터넷에서 파일을 다운로드하거나 업로드 할 때, 우리는 ProgressBar을 통해서 작업 진행 상황을 파악할 수 있다.

ProgressBar에는 2가지 모드가 있다.

  • Determinate ProgressBar
  • Indeterminate ProgressBar

Indeterminate ProgressBar

Indeterminate ProgressBar는 아쉽게도 작업의 진행률을 확인할 수는 없다. 그래서 대게 진행정도를 파악할 수 없을 때 사용한다. 예를들면 API 통신을 통해 데이터를 읽어 올 때, 즉 서버에서 데이터를 받는 정도를 파악할 수 없는 경우 사용한다.

Indeterminate ProgressBar 구현하기

개요

Indeterminate ProgressBar를 사용하는 간단한 앱을 만들어보려고 한다.
이 앱은 일정시간동안 ProgressBar가 동작하고 사라진다. 마치 앱이 로딩 작업을 진행하고 그 이후에 데이터를 보여주는 것처럼 동작하도록 했다.

실행화면

Build.gradle(:Module): ViewBinding 추가

ViewBindg 사용을 위해 build.gradle(:Module)파일에서 android { } 태그의 속성 값으로 아래와 같이 ViewBinding을 허용해준다.


android {
    ...

    viewBinding{
      enabled = true
    }  

    ...
}

activity_main.xml: ProgressBar View를 생성한다.

ProgressBar 사용을 위해 해당 XML파일에 View를 추가한다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textViewIsLoading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Loading..."
        android:textColor="@color/black"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="@id/progressBar"
        app:layout_constraintStart_toStartOf="@id/progressBar"
        app:layout_constraintTop_toBottomOf="@id/progressBar" />
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val delayMillis = 5000L
        Handler(Looper.myLooper()!!).postDelayed({
            /** `delayMillis` 이후에 수행할 동작 */
            binding.progressBar.isVisible = false
            binding.textViewIsLoading.text = "DONE"
        }, delayMillis)
    }


}

질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com

반응형
Comments