Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में ProgressDialog कैसे दिखाएं? (और आधुनिक विकल्प)

एंड्रॉइड में ProgressDialog — बेसिक उपयोग और आधुनिक विकल्प

ProgressDialog एक मॉडल डायलॉग है जो लोडिंग इंडिकेटर दिखाता है। **ध्यान दें:** यह क्लास **API लेवल 26 (Android 8.0) में डिप्रिकेटेड** हो गई है। Google अब ProgressBar (लेआउट में) या MaterialProgressIndicator (Material Components) उपयोग करने की सिफारिश करता है। यह ट्यूटोरियल दोनों तरीके दिखाता है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio → File → New → New Project → "Empty Activity" → Finish।

चरण 2: 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>

चरण 3: Legacy तरीका — ProgressDialog (डिप्रिकेटेड)

package com.example.progressdialogdemo;

import android.app.ProgressDialog;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private 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.setCancelable(false); // बैक बटन से बंद न हो
        progressDialog.show();

        // डेमो: 3 सेकंड बाद बंद करें
        findViewById(android.R.id.content).postDelayed(() -> {
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
            }
        }, 3000);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
    }
}

चरण 4: आधुनिक तरीका — ProgressBar इन लेआउट (सिफारिश किया गया)

activity_main_modern.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="24dp">

    <!-- कंटेंट एरिया -->
    <TextView
        android:id="@+id/tvContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="कंटेंट लोड होने के बाद यहां दिखेगा"
        android:textSize="18sp"
        android:visibility="gone" />

    <!-- प्रोग्रेस बार (सर्कुलर) -->
    <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="visible" />

    <!-- या मटीरियल डिज़ाइन सर्कुलर प्रोग्रेस (बेहतर लुक) -->
    <!--
    <com.google.android.material.progressindicator.CircularProgressIndicator
        android:id="@+id/materialProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        app:indicatorSize="56dp"
        app:trackThickness="4dp"
        app:indicatorColor="?attr/colorPrimary" />
    -->

</RelativeLayout>

MainActivityModern.java

package com.example.progressdialogdemo;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivityModern extends AppCompatActivity {

    private ProgressBar progressBar;
    private TextView tvContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_modern);

        progressBar = findViewById(R.id.progressBar);
        tvContent = findViewById(R.id.tvContent);

        // सिमुलेटेड नेटवर्क/डीबी ऑपरेशन
        new Handler(Looper.getMainLooper()).postDelayed(() -> {
            // लोडिंग खत्म — UI अपडेट करें
            progressBar.setVisibility(View.GONE);
            tvContent.setVisibility(View.VISIBLE);
            tvContent.setText("✅ डेटा सफलतापूर्वक लोड हो गया!");
        }, 3000);
    }
}

चरण 5: Material Progress Indicator (सबसे आधुनिक, सुंदर)

build.gradle में डिपेंडेंसी जोड़ें:

dependencies {
    implementation 'com.google.android.material:material:1.12.0' // नवीनतम वर्ज़न
}

फिर Layout में:

<com.google.android.material.progressindicator.CircularProgressIndicator
    android:id="@+id/materialProgress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    app:indicatorSize="56dp"
    app:trackThickness="4dp"
    app:indicatorColor="?attr/colorPrimary" />

// या डिटरमिनेट (हॉरिजॉन्टल) प्रोग्रेस के लिए
<com.google.android.material.progressindicator.LinearProgressIndicator
    android:id="@+id/linearProgress"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="24dp"
    app:indicatorColor="?attr/colorPrimary"
    app:trackColor="?attr/colorSurfaceVariant"
    app:trackThickness="8dp" />

Kotlin में उपयोग:

// इंडिटरमिनेट (लोडिंग)
materialProgress.show()
materialProgress.hide()

// डिटरमिनेट (प्रोग्रेस %)
linearProgress.setProgress(65, true) // true = एनिमेटेड

चरण 6: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.progressdialogdemo">

    <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/Theme.ProgressDialogDemo">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

तुलना: ProgressDialog vs ProgressBar vs MaterialProgressIndicator

विशेषताProgressDialog (डिप्रिकेटेड)ProgressBar (फ्रेमवर्क)MaterialProgressIndicator
API स्टेटस❌ डिप्रिकेटेड (API 26+)✅ स्थिर✅ सक्रिय विकास
UI थ्रेड ब्लॉकहां (मॉडल डायलॉग)नहीं (इनलाइन)नहीं (इनलाइन)
कस्टमाइज़ेशनसीमितमध्यमउच्च (रंग, आकार, एनिमेशन)
एक्सेसिबिलिटीबेसिकअच्छाउत्कृष्ट
डिटरमिनेट मोडहांहांहां (स्मूथ एनिमेशन)

सारांश

  • 🚫 **ProgressDialog का उपयोग न करें** — डिप्रिकेटेड, मॉडल, कम लचीला।
  • ✅ **ProgressBar** लेआउट में रखें — सरल, हल्का, नॉन-ब्लॉकिंग।
  • ✨ **MaterialProgressIndicator** (Material Components) — सबसे अच्छा लुक, एनिमेशन, एक्सेसिबिलिटी।
  • 🔄 लंबे ऑपरेशन्स के लिए ViewModel + LiveData/StateFlow + लेआउट में प्रोग्रेस बार — आर्किटेक्चर-संगत।
  1. Android अलर्ट डायलॉग में ListView कैसे दिखाएं? Android अलर्ट डायलॉग में ListView कैसे दिखाएं?

    Android AlertDialog में कस्टम ListView प्रदर्शित करना यह उदाहरण दर्शाता है कि एक कस्टम लेआउट के साथ AlertDialog में ListView कैसे दिखाया जाए, जिसमें नीचे एक बटन भी शामिल है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: मेन लेआउट (res/layout/activity_main.xml) <

  1. Android में अलर्ट डायलॉग कैसे दिखाएं? Android में अलर्ट डायलॉग कैसे दिखाएं?

    Android में अलर्ट डायलॉग दिखाने का पूरा गाइड यह ट्यूटोरियल आपको Android ऐप में अलर्ट डायलॉग बनाने और दिखाने का चरणबद्ध तरीका बताता है। अलर्ट डायलॉग उपयोगकर्ता से पुष्टि लेने या महत्वपूर्ण जानकारी दिखाने के लिए उपयोगी होते हैं। चरण 1: नया प्रोजेक्ट बनाएं Android Studio खोलें और File → New Project चु

  1. Android में एक्टिविटी शुरू करने से पहले प्रोग्रेस डायलॉग कैसे दिखाएं? Android में एक्टिविटी शुरू करने से पहले प्रोग्रेस डायलॉग कैसे दिखाएं?

    Android में एक्टिविटी लॉन्च से पहले प्रोग्रेस डायलॉग दिखाना यह ट्यूटोरियल दिखाता है कि कैसे AsyncTask के साथ ProgressDialog का उपयोग करके बैकग्राउंड वर्क के दौरान लोडिंग इंडिकेटर दिखाया जाता है। नोट: ProgressDialog डिप्रिकेटेड है; आधुनिक ऐप्स में ProgressBar या Jetpack Compose का उपयोग करें। चरण 1: