ภาพรวม
ตัวอย่างนี้สาธิตวิธีการแสดง ProgressDialog ก่อนเริ่ม Activity ใหม่ใน Android โดยใช้ AsyncTask และ Kotlin
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
สร้างโปรเจกต์ Android ใหม่ใน Android Studio
ขั้นตอนที่ 2: จัดรูปแบบหน้าจอหลัก (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
ใช้ AsyncTask แสดง ProgressDialog ก่อนโหลดข้อมูล:
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).apply {
setTitle("Content Loader")
setMessage("Loading...")
progress = 10
max = 100
}
MyTask(this).execute()
}
companion object {
inner class MyTask(private val mainActivity: MainActivity) : AsyncTask<Void, Void, Void>() {
override fun doInBackground(vararg params: Void?): Void? {
// จำลองงานที่ใช้เวลานาน
Thread.sleep(3000)
return null
}
override fun onPreExecute() {
mainActivity.progressDialog.show()
}
override fun onPostExecute(result: Void?) {
mainActivity.progressDialog.dismiss()
// เริ่ม Activity ใหม่หรือทำงานต่อไปที่นี่
}
}
}
}
หมายเหตุสำคัญ:ProgressDialogและAsyncTaskถูก Deprecated ใน Android API ใหม่ แนะนำให้ใช้ProgressBarในเลย์เอาต์ หรือCoroutines/Flowสำหรับงานพื้นหลังแทน
ขั้นตอนที่ 4: ตั้งค่า AndroidManifest.xml
ใช้การตั้งค่ามาตรฐาน
ทดสอบการทำงาน
รันแอปจะเห็น ProgressDialog แสดง "Loading..." ก่อนเข้าสู่หน้าจอหลัก