안드로이드 작업중에 시간이 걸리는 작업이 있을 경우
로딩 다이얼로그를 사용하여 진행상황을 표시해줄 수 있다.
XML
<?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">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/loadingText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Loading ..."
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/progressBar" />
</androidx.constraintlayout.widget.ConstraintLayout>
다이얼로그로 사용할 xml 파일을 생성해준다.
Dialog
class LoadingDialog(context: Context) : Dialog(context){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_loading)
// 취소 불가능
setCancelable(false)
// 배경 투명하게 바꿔줌
window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
}
다이얼로그 코드를 생성해주고
setCancleable 옵션을 사용하여 다른화면을 클릭하거나 백버튼을 클릭하였을 때 종료되지 않도록 해주고
배경색을 TRANSPARENT로 설정하여 투명하게 표시해준다.
val dialog = LoadingDialog(this@ProfileActivity)
dialog.show()
dialog.dismiss()
이제 로딩이 필요한 작업을 할 때 저 다이얼로그를 show 를 통해 띄워주고
작업이 종료되었을 때 dismiss 해줌으로써 로딩 상태를 표시해줄 수 있다.