Hướng dẫn này trình bày cách sử dụng ProgressDialog để hiển thị hộp thoại tiến trình (loading) trong Android. Lưu ý quan trọng: ProgressDialog đã bị deprecated từ API 26 (Android 8.0) và không khuyến khích sử dụng trong ứng dụng hiện đại. Thay vào đó, nên dùng ProgressBar trong layout hoặc Material Design Components như ProgressIndicator.
Các bước thực hiện (chỉ để tham khảo mã nguồn cũ)
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Layout (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">
</RelativeLayout>
Bước 3: Code MainActivity (src/MainActivity.java)
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("Nội dung của tôi");
progressDialog.setMessage("Đang tải nội dung, vui lòng đợi!");
progressDialog.show();
}
}
Bước 4: Cấu hình AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<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>
Chạy ứng dụng
Kết nối thiết bị, nhấn Run. Hộp thoại loading sẽ hiện ra ngay khi activity khởi tạo.

Thay thế hiện đại (Khuyến nghị)
1. ProgressBar trong XML Layout
<!-- Layout có ProgressBar ẩn/hiện -->
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
// Trong code Java/Kotlin ProgressBar progressBar = findViewById(R.id.progressBar); // Hiện progressBar.setVisibility(View.VISIBLE); // Ẩn sau khi xong progressBar.setVisibility(View.GONE);
2. Material ProgressIndicator (Material Components)
Thêm dependency: implementation 'com.google.android.material:material:1.9.0'
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/circularProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="gone" />
3. Sử dụng coroutines (Kotlin) cho tác vụ nền
// Kotlin với Coroutines
lifecycleScope.launch {
progressBar.visibility = View.VISIBLE
try {
val result = repository.loadData() // suspend function
// Cập nhật UI
} catch (e: Exception) {
// Xử lý lỗi
} finally {
progressBar.visibility = View.GONE
}
}
Tóm tắt
- ProgressDialog: Đã deprecated, không dùng cho dự án mới
- ProgressBar: Tiêu chuẩn, nhẹ, tùy chỉnh dễ dàng
- Material ProgressIndicator: Giao diện hiện đại, hỗ trợ indeterminate/determinate
- Luôn chạy tác vụ nặng (network, DB, tính toán) trên background thread