Android में एक्टिविटी लॉन्च से पहले प्रोग्रेस डायलॉग दिखाना
यह ट्यूटोरियल दिखाता है कि कैसे AsyncTask के साथ ProgressDialog का उपयोग करके बैकग्राउंड वर्क के दौरान लोडिंग इंडिकेटर दिखाया जाता है। नोट: ProgressDialog डिप्रिकेटेड है; आधुनिक ऐप्स में ProgressBar या Jetpack Compose का उपयोग करें।
चरण 1: प्रोजेक्ट सेटअप
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट फाइल
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="4dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="एक्टिविटी शुरू होने से पहले प्रोग्रेस डायलॉग दिखा रहे हैं..."
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>
चरण 3: AsyncTask के साथ प्रोग्रेस डायलॉग
src/MainActivity.java:
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
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(this);
progressDialog.setTitle("कंटेंट लोडर");
progressDialog.setMessage("लोड हो रहा है...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100);
progressDialog.setProgress(0);
progressDialog.setCancelable(false);
new MyTask().execute();
}
private class MyTask extends AsyncTask<Void, Integer, Void> {
@Override
protected void onPreExecute() {
progressDialog.show();
}
@Override
protected Void doInBackground(Void... voids) {
// सिमुलेटेड बैकग्राउंड वर्क
for (int i = 0; i <= 100; i += 10) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
// यहां अगली एक्टिविटी शुरू करें
// startActivity(new Intent(MainActivity.this, NextActivity.class));
}
}
}
आधुनिक विकल्प (अनुशंसित)
1. ProgressBar के साथ लेआउट में
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
2. Coroutines के साथ (Kotlin)
lifecycleScope.launch {
progressBar.visibility = View.VISIBLE
val result = withContext(Dispatchers.IO) { doBackgroundWork() }
progressBar.visibility = View.GONE
// UI अपडेट करें
}
3. Jetpack Compose में
var showProgress by remember { mutableStateOf(false) }
if (showProgress) {
CircularProgressIndicator()
}
चरण 4: मैनिफेस्ट
स्टैंडर्ड कॉन्फ़िगरेशन।
महत्वपूर्ण चेतावनियां
- ProgressDialog API 26 में डिप्रिकेटेड - नए प्रोजेक्ट्स में उपयोग न करें
- AsyncTask भी डिप्रिकेटेड है - Coroutines, RxJava, या Executors उपयोग करें
- कॉन्फिगरेशन चेंज (रोटेशन) को हैंडल करने के लिए ViewModel उपयोग करें
- लंबे ऑपरेशंस के लिए WorkManager पर विचार करें