개요
이 글에서는 Kotlin을 사용하여 Android에서 새로운 액티비티를 시작하기 전에 진행률 다이얼로그(ProgressDialog)를 화면에 표시하는 방법을 단계별로 살펴봅니다. 데이터 로딩처럼 시간이 걸리는 작업 중에 사용자에게 진행 상황을 알려주면 앱의 사용자 경험이 크게 향상됩니다.
1단계 — 새 프로젝트 생성
Android Studio에서 File → New Project 메뉴로 이동한 후, 새 프로젝트 생성에 필요한 정보를 모두 입력하여 프로젝트를 만듭니다.
2단계 — 레이아웃 파일(activity_main.xml) 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp"
android:background="#008080"
android:padding="5dp"
android:text="TutorialsPoint"
android:textColor="#fff"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Showing Progress dialog before starting the activity in Android.."
android:textAlignment="center"
android:textColor="@android:color/holo_blue_bright"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
3단계 — MainActivity.kt 작성
src/MainActivity.kt 파일에 아래 코드를 추가합니다. 이 예제에서는 AsyncTask의 onPreExecute() 콜백에서 다이얼로그를 먼저 표시한 뒤, 백그라운드 작업이 실행되는 구조입니다.
import android.app.ProgressDialog
import android.os.AsyncTask
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
@Suppress("DEPRECATION")
class MainActivity : AppCompatActivity() {
private lateinit var progressDialog: ProgressDialog
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
progressDialog = ProgressDialog(this)
progressDialog.setTitle("Content Loader")
progressDialog.progress = 10
progressDialog.max = 100
progressDialog.setMessage("Loading...")
MyTask(this).execute()
}
companion object {
class MyTask(private val mainActivity: MainActivity) : AsyncTask<Void, Void, Void>() {
override fun doInBackground(vararg unUsed: Void?): Void? {
return null
}
override fun onPreExecute() {
mainActivity.progressDialog.show()
}
}
}
}
4단계 — AndroidManifest.xml 설정
AndroidManifest.xml 파일에 아래와 같이 MainActivity가 올바르게 등록되어 있는지 확인하고 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
앱 실행하기
이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run
아이콘을 클릭하세요. 실행 옵션에서 본인의 모바일 기기를 선택하면, 기기 화면에 아래와 같은 결과가 표시됩니다.

참고: 최신 Android 개발에서의 대안
ProgressDialog는 현재 공식적으로 지원 중단(deprecated)된 API입니다. 위 예제는 학습 목적으로 @Suppress("DEPRECATION") 어노테이션을 사용해 경고를 억제한 것입니다. 실제 프로덕션 환경에서는 레이아웃 안에 ProgressBar를 직접 배치하거나, Material Design의 로딩 인디케이터, 또는 Kotlin Coroutines와 함께 사용하는 커스텀 다이얼로그를 활용하는 것이 권장됩니다.