경험의 기록

안드로이드 작업중에 시간이 걸리는 작업이 있을 경우

로딩 다이얼로그를 사용하여 진행상황을 표시해줄 수 있다.

 

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 해줌으로써 로딩 상태를 표시해줄 수 있다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading