본문 바로가기

[Android]/허접 Programming Tips

안드로이드 Kotlin, Coroutine으로 Custom Loading Dialog(커스텀 로딩 다이얼로그) 구현하기

안녕하세요 허접샴푸입니다~!

 

이번에는 Coroutine을 이용하여 커스텀 Dialog를 2초 동안 보여지게 하고 2초 후 꺼지게 하는 방법에 대해 설명해 드리도록 하겠습니다.

 

Coroutine 공식 github 사이트를 통해 더 많은 정보를 얻어가시기 바랍니다.

Coroutine -> https://github.com/Kotlin/kotlinx.coroutines

 

Kotlin/kotlinx.coroutines

Library support for Kotlin coroutines . Contribute to Kotlin/kotlinx.coroutines development by creating an account on GitHub.

github.com

 

[1] 먼저 Coroutine을 사용하기 위해서는 build.gradle (Module: app)에 아래와 같이 dependency를 추가해주어야 합니다.

//Coroutine
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'

 

[2] MainActivity.kt에서 아래와 같이 showLoadingDialog  함수를 만들어줍니다.

CoroutineScope(Main) : 여기서 "Main"은 Dispatchers.Main을 뜻하며 UI 작업, 가벼운 동작, livedata 업데이트 등에 사용이 됩니다. 저희는 Custom dialog 를 화면에 띄우고 2초 후 꺼지도록 하는 UI 작업을 해야 하므로 Dispatchers.Main을 사용합니다.

 

delay(2000) : delay의 설명은 Delays coroutine for a given time without blocking a thread and resumes it after a specified time.  라고 되어있습니다. 즉 주어진 시간동안 코루틴을 연기시키고, 그 시간 후에 재가동(resume) 합니다. 즉 delay를 통해 2초동안 Custom Dialog를 띄울 수 있게 되는 것이죠.

 

2초 후에는 dialog.dismiss()를 통해 다이얼로그를 종료시키면 끗~! 별 어려움 없죠?

실제 앱 서비스에서 이러한 Coroutine 및 커스텀 로딩 다이얼로그의 사용 용도는 주로 많은 양의 작업을 소화시켜야 하거나, Network 통신이 이루어 질때 입니다. 

 

[결과 화면]

첫 실행 화면

 

 

"Load" 버튼을 눌렀을 때 화면. 2초 동안 로딩 다이얼로그를 띄운다.

 

 

2초가 지나면 커스텀 다이얼로그는 종료되며, 버튼의 text는 "Finished"로 바뀐다. 끗~!

 

 

[깃허브]

아래 깃허브에서 해당 코드를 확인 하실 수 있습니다.

https://github.com/DJDrama/Playground/tree/coroutine

불러오는 중입니다...

 

질문이 있으시면 댓글에 적어주시면 감사하겠습니다~!