ProgressDialog को हटा दिया गया है। वैकल्पिक एक का उपयोग करने के लिए क्या है?


215

मैं देख चुका हूं कि ProgressDialogअब यह पदावनत हो गया है। इसके अलावा उपयोग करने के लिए वैकल्पिक विकल्प क्या होगा ProgressBar। मैं Android स्टूडियो संस्करण 2.3.3 का उपयोग कर रहा हूं।

ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();

जवाबों:


196

हां, API level 26इसमें पदावनत किया गया है। इसके बजाय, आप उपयोग कर सकते हैं progressBar

इसे प्रोग्रामेटिक रूप से बनाने के लिए:

पहले रूट लेआउट का संदर्भ लें

RelativeLayout layout = findViewById(R.id.display);  //specify here Root layout Id

या

RelativeLayout layout = findViewById(this);

फिर प्रगति पट्टी जोड़ें

progressBar = new ProgressBar(youractivity.this, null, android.R.attr.progressBarStyleLarge);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar, params);

प्रगति पट्टी दिखाने के लिए

progressBar.setVisibility(View.VISIBLE);

प्रगति पट्टी को छिपाने के लिए

progressBar.setVisibility(View.GONE);

उपयोगकर्ता इंटरैक्शन को अक्षम करने के लिए आपको बस निम्नलिखित कोड जोड़ना होगा

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                           WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

उपयोगकर्ता इंटरैक्शन वापस पाने के लिए आपको बस निम्नलिखित कोड जोड़ना होगा

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

बस भविष्य में संदर्भ के लिए, बदलने android.R.attr.progressBarStyleSmallके लिए android.R.attr.progressBarStyleHorizontal

नीचे दिया गया कोड केवल ऊपर काम करता है API level 21

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

इसे xml के माध्यम से बनाने के लिए:

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:max="100"
        android:backgroundTint="@color/white"
        android:layout_below="@+id/framelauout"
        android:indeterminateTint="#1a09d6"
        android:layout_marginTop="-7dp"/>

आपकी गतिविधि में

progressBar = (ProgressBar) findViewById(R.id.progressbar);

प्रगति पट्टी को दिखाना / छिपाना एक ही है

 progressBar.setVisibility(View.VISIBLE); // To show the ProgressBar 
 progressBar.setVisibility(View.INVISIBLE); // To hide the ProgressBar

यहाँ एक नमूना छवि है कि यह कैसा दिखेगा:

अधिक जानकारी के लिए:
1. संदर्भ एक
2. संदर्भ दो


यह ऐसा है जैसे आप इसका उपयोग कर रहे हैं और आप हाँ की तरह चलते हैं, अंत में प्रगति संवाद को हटा दिया जाता है, इसलिए मैं दुनिया को अपनी क्षमता दिखा सकता हूं: डी, ​​बस मजाक कर रहा हूं, उस विस्तृत जवाब के लिए बहुत बहुत धन्यवाद।
मोहम्मद हज

1
लेकिन इसे कैसे सेट करें ()?
reverie_ss


कृपया xml कोड को "@android: color / white" पर
अपडेट करें

क्षैतिज बार प्राप्त करने के लिए कृपया उपयोग करें: ProgressBar progressBar = new ProgressBar (youractivity.this, null, android.R.attr.progressBarStyleHor
तरणजीतसप्रा

44

आप नीचे दिए गए कोड के AlertDialogरूप में उपयोग कर सकते हैं । जब भी आप एक प्रगति संवाद दिखाते हैं, तो यह फ़ंक्शन आपको कॉल करने की आवश्यकता होती है।ProgressDialogProgressDialog

कोड:

    public void setProgressDialog() {

    int llPadding = 30;
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.HORIZONTAL);
    ll.setPadding(llPadding, llPadding, llPadding, llPadding);
    ll.setGravity(Gravity.CENTER);
    LinearLayout.LayoutParams llParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    llParam.gravity = Gravity.CENTER;
    ll.setLayoutParams(llParam);

    ProgressBar progressBar = new ProgressBar(this);
    progressBar.setIndeterminate(true);
    progressBar.setPadding(0, 0, llPadding, 0);
    progressBar.setLayoutParams(llParam);

    llParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    llParam.gravity = Gravity.CENTER;
    TextView tvText = new TextView(this);
    tvText.setText("Loading ...");
    tvText.setTextColor(Color.parseColor("#000000"));
    tvText.setTextSize(20);
    tvText.setLayoutParams(llParam);

    ll.addView(progressBar);
    ll.addView(tvText);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setView(ll);

    AlertDialog dialog = builder.create();
    dialog.show();
    Window window = dialog.getWindow();
    if (window != null) {
        WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
        layoutParams.copyFrom(dialog.getWindow().getAttributes());
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
        dialog.getWindow().setAttributes(layoutParams);
    }
}

आउटपुट:

यहां छवि विवरण दर्ज करें


इसे कैसे खारिज किया जाए?
जय डांगर

1
बेसएक्टिविटी की तरह एक बेस क्लास बनाएं फिर इस कोड को जोड़ने के बाद, एक तरीका डिसकस डायलॉग भी जोड़ें, लेकिन इसके लिए, आपको विश्व स्तर पर 'एलर्टडायलॉग डायलॉग' ऑब्जेक्ट को परिभाषित करने की आवश्यकता है
किशन डोंगा

इसके बाद अपने डायलॉग छिपाने की विधि के अंदर डायलॉग। प्रिज्म () विधि को कॉल करें।
किशन डोंगा

1
सब कुछ ठीक है, लेकिन स्क्रीन डायलॉग पर कहीं भी टैप करने पर यह खारिज हो रहा है। सेवा जारी है और सहर कॉल इसे खारिज करने में सक्षम है और ui के साथ खेल सकता है जो सही नहीं है। कोई भी समाधान?
विवेक कुमार

आप इसे रद्द नहीं कर सकते, लेकिन डिवाइस को घुमाते हुए या विभाजित स्क्रीन का उपयोग करके इसे वैसे भी खारिज कर दिया जाएगा और उपयोगकर्ता UI के साथ बातचीत कर सकता है जो तैयार नहीं है। शायद AlertDialogयहां इस्तेमाल नहीं किया जाना चाहिए।
मेव कैट 2012

30

यह वर्ग एपीआई स्तर 26 में पदावनत किया गया था। प्रोग्रेसडायलॉग एक मोडल संवाद है, जो उपयोगकर्ता को ऐप के साथ बातचीत करने से रोकता है। इस वर्ग का उपयोग करने के बजाय, आपको प्रगति सूचक जैसे प्रगति संकेतक का उपयोग करना चाहिए, जिसे आपके ऐप के यूआई में एम्बेड किया जा सकता है। वैकल्पिक रूप से, आप कार्य की प्रगति के उपयोगकर्ता को सूचित करने के लिए एक अधिसूचना का उपयोग कर सकते हैं। संपर्क

नए UI मानक के Android Oकारण इसे अपदस्थ किया गया हैGoogle


1
"इस कक्षा को एपीआई स्तर 26 में पदावनत किया गया था" का उपयोग तारीख के बजाय किया जाता है। वे नहीं चाहते कि आप अब इसका इस्तेमाल करें। हां, यह नए UI मानकों के कारण है, लेकिन वे हर एपीआई स्तर के लिए आवेदन करते हैं ...
रचनात्मक

28
"Google नए UI मानक के कारण इसे Android O में अपदस्थ किया गया है" - लिंक कृपया नए UI मानक
Ajay S

22
और इसे हटाने का कारण यह है कि यह उपयोगकर्ता इनपुट को अवरुद्ध करता है? कभी-कभी मुझे आश्चर्य होता है कि Google इंजीनियर किस तरह के पाउडर को सूंघ रहे हैं। इनपुट नियंत्रणों को छिपाने / अक्षम करने और फिर एक प्रगति पट्टी को सक्षम करने की तुलना में अवरुद्ध संवाद का उपयोग करना बहुत आसान है। गूगल की ओर से मूर्खतापूर्ण सोच।
TheRealChx101

@ TheRealChx101 एंड्रॉइड यूआई को डिज़ाइन किया गया है ताकि उपयोगकर्ता को इसके परिणामस्वरूप होने वाली घातक त्रुटियों को रोकने के लिए महंगे वर्कआर्ड की कीमत पर स्वतंत्रता की झूठी भावना महसूस हो। प्रतीक्षा करें जब तक आप अनुमतियों में नहीं आते हैं और वाहक ने Google को यह कहने के लिए भुगतान किया है कि आप पहुंच नहीं सकते हैं।
कार्ट कार्ट

3
मुझे लगता है कि वे मॉडल संवादों के दुरुपयोग को रोकने में अधिक रुचि रखते हैं: कभी-कभी उन्हें उपयोगकर्ता को उन परिस्थितियों में एक ऑपरेशन के अंत की प्रतीक्षा करने के लिए दिखाया जाता है जिसमें उपयोगकर्ता को सभी पर इंतजार करने की आवश्यकता नहीं होनी चाहिए, लेकिन अन्य चीजें करना जारी रख सकते हैं , इसलिए उन्हें अनावश्यक रूप से प्रतीक्षा करना उपयोगकर्ता अनुभव को नीचा दिखाता है। इसके बावजूद, ऐसी बहुत सी परिस्थितियाँ हैं जिनमें उपयोगकर्ता के लिए कोई विकल्प नहीं है, लेकिन एक ऑपरेशन के पूरा होने की प्रतीक्षा करते हैं, इसलिए मैं सहमत हूं कि इन मामलों के लिए एक गैर-पदावनत मानक विधि होनी चाहिए बजाय इसके कि प्रत्येक डेवलपर अपने स्वयं के कार्यान्वयन के लिए मजबूर हो।
फ्रैंज मरोजा

26

आप बस अपने प्रगति पट्टी के लिए एक xml इंटरफ़ेस डिज़ाइन कर सकते हैं और इसे AlertDialog के दृश्य के रूप में पास कर सकते हैं, फिर किसी भी समय आप जो चाहें डायलॉग दिखा सकते हैं या खारिज कर सकते हैं।

progress.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:padding="13dp"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/loader"
        android:layout_marginEnd="5dp"
        android:layout_width="45dp"
        android:layout_height="45dp" />
    <TextView
        android:layout_width="wrap_content"
        android:text="Loading..."
        android:textAppearance="?android:textAppearanceSmall"
        android:layout_gravity="center_vertical"
        android:id="@+id/loading_msg"
        android:layout_toEndOf="@+id/loader"
        android:layout_height="wrap_content" />

</LinearLayout>

कोड कोड जो प्रगति संवाद को प्रदर्शित करता है। बस इस कोड को कॉपी करें और इसे अपने टुकड़े पेस्ट करें।

  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
       private void setDialog(boolean show){
            builder.setView(R.layout.progress);
            Dialog dialog = builder.create();
            if (show)dialog.show();
            else dialog.dismiss();
        }

फिर जब भी आप प्रगति को दिखाना चाहते हैं, तो विधि को कॉल करें और डायलॉग को खारिज करने के लिए इसे दिखाने के लिए एक तर्क के रूप में सही या गलत साबित करें।


2
@ आलोक राजसुकुमारन ऐसा लगता है कि आप गतिविधि का उपयोग कर रहे हैं, बस इसे बदल दें this, ताकि यह इस तरह दिखे। AlertDialog.Builder builder = new AlertDialog.Builder(this);कृपया सुनिश्चित करें कि आप सही कोड की प्रतिलिपि बना रहे हैं।
DevMike01

1
layout_toEndOfके लिए नहीं हटाया जा सकताLinearLayout
मार्क

21

प्रोग्रेसबेर बहुत ही सरल और उपयोग में आसान है, मैं इसे सरल प्रगति संवाद के रूप में बनाने का इरादा कर रहा हूं। पहला कदम यह है कि आप उस डायलॉग का xml लेआउट बना सकते हैं जिसे आप दिखाना चाहते हैं, मान लें कि हम इस लेआउट को नाम देते हैं

layout_loading_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="20dp">
    <ProgressBar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="4"
        android:gravity="center"
        android:text="Please wait! This may take a moment." />
</LinearLayout>

अगला चरण AlertDialog है जो इस लेआउट को ProgressBar के साथ दिखाएगा

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(false); // if you want user to wait for some process to finish,
builder.setView(R.layout.layout_loading_dialog);
AlertDialog dialog = builder.create();

अब जो कुछ बचा है वह इस डायलॉग को इस तरह से हमारे क्लिक इवेंट्स में दिखाना और छिपाना है

dialog.show(); // to show this dialog
dialog.dismiss(); // to hide this dialog

और यह thats, यह काम करना चाहिए, जैसा कि आप देख सकते हैं यह ProgressDarog के बजाय ProgressBar को लागू करने के लिए सरल और आसान है। अब आप इस डायलॉग बॉक्स को अपनी जरूरत के अनुसार हैंडलर या ASyncTask में दिखा / खारिज कर सकते हैं


कृपया, इसमें बदलाव progress_dialog.show();करें builder.show();। धन्यवाद।
मैथ्यूज मिरांडा

2
मैंने AlertDialog ऑब्जेक्ट को सही करने के लिए नाम बदल दिया है, show()/ dismiss(), लेकिन मैंने नहीं डाला builder.show()क्योंकि तब इसे खारिज करने के लिए हमें वह करना होगा dialog.dismiss()जो किसी ऐसे व्यक्ति के लिए भ्रामक है जो अपने कोड को सरल और समझने में आसान रखना पसंद करता है, और क्योंकि ऑब्जेक्ट builder.show()लौटाता AlertDialogहै, और हमें उस संदर्भ को सहेजना होगा, जैसे AlertDialog dialog = builder.show();तब करते हैं dialog.dismiss(), builder.create()किसी AlertDialogवस्तु में वापस आना आसान होता है , और फिर डायलॉग दिखाने और छिपाने के लिए उस ऑब्जेक्ट का उपयोग करें
सैयद नईम

यदि "कॉलिंग थ्रेड मुख्य UI थ्रेड नहीं है, तो हम" runOnUiThread (नया Runnable () {@Override public void run () {dialog.show/dismiss ();}}}) का उपयोग कर सकते हैं। (उपयोगी जब हम WebView - शोवराइड तरीकों से कॉल करने के लिए उपयोग करते हैं।)
SHS

15

हाँ, ProgressDialog को हटा दिया गया है लेकिन संवाद नहीं है।

आप अपने संवाद ऑब्जेक्ट में अपनी XML फ़ाइल (एक प्रगति बार और एक लोडिंग टेक्स्ट युक्त) को फुला सकते हैं और फिर इसे show()और dismiss()फ़ंक्शन का उपयोग करके प्रदर्शित या छिपा सकते हैं । यहाँ एक उदाहरण है (कोटलिन):

ProgressDialog वर्ग :

class ProgressDialog {
companion object {
    fun progressDialog(context: Context): Dialog{
        val dialog = Dialog(context)
        val inflate = LayoutInflater.from(context).inflate(R.layout.progress_dialog, null)
        dialog.setContentView(inflate)
        dialog.setCancelable(false)
        dialog.window!!.setBackgroundDrawable(
                ColorDrawable(Color.TRANSPARENT))
        return dialog
    }
  }
}

एक्सएमएल

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:background="#fff"
android:padding="13dp"
android:layout_height="wrap_content">
<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="100dp"
    android:layout_margin="7dp"
    android:layout_height="100dp"
    android:layout_above="@+id/no_jobs_pickups"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_margin="7dp"
    android:layout_toEndOf="@+id/progressBar"
    android:text="Loading..." />
</RelativeLayout>

अपने कोड में : बस करोvar dialog = ProgressDialog.progressDialog(context)

दिखाना: dialog.show()

छुपाना: dialog.dismiss()


11

यदि आप वास्तव में उनकी इच्छा के विरुद्ध जाना चाहते हैं, तब भी आप स्वीट अलर्ट डायलॉग का उपयोग कर सकते हैं या अपनी मर्जी से बना सकते हैं।

progress_dialog_layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="64dp" >

        <ProgressBar
            android:id="@+id/progressBar2"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <TextView
            android:gravity="center|left"
            android:id="@+id/textView9"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textColor="@color/black"
            android:textSize="18sp"
            android:text="Downloading data. Please wait.." />
    </TableRow>
</RelativeLayout>

जावा कोड:

AlertDialog b;
AlertDialog.Builder dialogBuilder;

public void ShowProgressDialog() {
dialogBuilder = new AlertDialog.Builder(DataDownloadActivity.this);
LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
            View dialogView = inflater.inflate(R.layout.progress_dialog_layout, null);
            dialogBuilder.setView(dialogView);
            dialogBuilder.setCancelable(false);
            b = dialogBuilder.create();
            b.show();
        }

        public void HideProgressDialog(){

            b.dismiss();
        }

2
मुझे उत्पादन सेटिंग में SweetAlertDialog के साथ भयानक अनुभव हुए हैं, बहुत सतर्क रहें क्योंकि यह खिड़की से खिड़की तक लीक होता है।
जेरेमी

मेरे लिए HideProgressकुछ नहीं करता।
सईद नेमाती

1
सिर्फ एक प्रगति संवाद दिखाने के लिए पुस्तकालय का उपयोग क्यों करें?
खेमराज

6

ProgressBar, ProgressDialog के लिए सबसे अच्छा विकल्प है। एक उपयोगकर्ता इंटरफ़ेस तत्व जो एक ऑपरेशन की प्रगति को इंगित करता है।

अधिक जानकारी के लिए यह Google डॉक देखें : https://developer.android.com/reference/android/widget/ProgressBar.html


16
उन्होंने कहा "प्रोग्रेसबार से अलग"।
क्रिएटिवक्रिएटोरमायबेनोट 12

6

आपको किसी भी कस्टम लाइब्रेरी को आयात करने की आवश्यकता नहीं है।

मैं आधुनिक का उपयोग करना पसंद करता हूं AlertDialogइसलिए इस पृष्ठ में किशन डोंगा द्वारा पोस्ट किए गए महान उत्तर के लिए कोटलिन संस्करण है ।

कोटलिन कोड:

fun setProgressDialog(context:Context, message:String):AlertDialog {
    val llPadding = 30
    val ll = LinearLayout(context)
    ll.orientation = LinearLayout.HORIZONTAL
    ll.setPadding(llPadding, llPadding, llPadding, llPadding)
    ll.gravity = Gravity.CENTER
    var llParam = LinearLayout.LayoutParams(
                  LinearLayout.LayoutParams.WRAP_CONTENT,
                  LinearLayout.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    ll.layoutParams = llParam

    val progressBar = ProgressBar(context)
    progressBar.isIndeterminate = true
    progressBar.setPadding(0, 0, llPadding, 0)
    progressBar.layoutParams = llParam

    llParam = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    val tvText = TextView(context)
    tvText.text = message
    tvText.setTextColor(Color.parseColor("#000000"))
    tvText.textSize = 20.toFloat()
    tvText.layoutParams = llParam

    ll.addView(progressBar)
    ll.addView(tvText)

    val builder = AlertDialog.Builder(context)
    builder.setCancelable(true)
    builder.setView(ll)

    val dialog = builder.create()
    val window = dialog.window
    if (window != null) {
        val layoutParams = WindowManager.LayoutParams()
        layoutParams.copyFrom(dialog.window?.attributes)
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT
                dialog.window?.attributes = layoutParams
    }
    return dialog
}

उपयोग:

val dialog = setProgressDialog(this, "Loading..")
dialog.show()

आउटपुट:

यहां छवि विवरण दर्ज करें


टुकड़े में कैसे उपयोग करें? टुकड़ा में संदर्भ क्या है?
रोघैह होसेनी

आमतौर पर आपके टुकड़े में आपको अपना वर्तमान दृश्य मिल सकता है, इसलिए संदर्भ यह होना चाहिए:view!!.context
एलेसेंड्रो ओरानानो

4

जैसा कि प्रलेखन पृष्ठ पर उल्लेख किया गया है , विकल्प है ProgressBarProgressDialogएक ProgressBarमें एक रखकर देखो दोहराया जा सकता है AlertDialog

आप अभी भी इसका उपयोग कर सकते हैं, लेकिन एंड्रॉइड नहीं चाहता है कि आप इसका उपयोग करें, यही कारण है कि यह पदावनत है। तो आपको अपनी समस्या को दूसरे तरीके से हल करने पर विचार करना चाहिए, जैसे कि ProgressBarअपने में एम्बेड करना Layout


@PeterHaddad यह मेरी परियोजना में सामान्य रूप से "एपी" 28 में काम करता है और निचले एपिस में भी ऐसा ही है। जैसा कि चित्रण से पता चलता है, यह अब समर्थित नहीं है और भविष्य में काम नहीं कर सकता है।
DMONkey

3

ProgressDialog एपीआई स्तर 26 में पदावनत किया गया।

"Deprecated" उन कार्यों या तत्वों को संदर्भित करता है जो नए लोगों द्वारा प्रतिस्थापित किए जाने की प्रक्रिया में हैं।

ProgressDialog एक मोडल डायलॉग है, जो यूज़र को ऐप के साथ इंटरैक्ट करने से रोकता है। इस वर्ग का उपयोग करने के बजाय, आपको प्रगति संकेतक का उपयोग करना चाहिए ProgressBar, जैसे कि आपके ऐप के UI में एम्बेड किया जा सकता है।

फायदा

मैं व्यक्तिगत रूप से कहूंगा कि ProgressBarदोनों में बढ़त है। ProgressBarएक उपयोगकर्ता इंटरफ़ेस तत्व है जो एक ऑपरेशन की प्रगति को इंगित करता है। एक गैर-अवरोधी तरीके से उपयोगकर्ता के लिए प्रगति बार प्रदर्शित करें । अपने ऐप के उपयोगकर्ता इंटरफ़ेस में प्रगति बार दिखाएं।


2

मैं https://github.com/Q115/DelayedProgressDialog से DelayedProgressDialog का उपयोग करता हूँ। यदि आवश्यक हो तो विलंब के अतिरिक्त लाभ के साथ यह ProgressDialog के समान है।

इसका उपयोग करना Android O से पहले ProgressDialog के समान है:

DelayedProgressDialog progressDialog = new DelayedProgressDialog();
progressDialog.show(getSupportFragmentManager(), "tag");

2

मेरे लिखे इस वर्ग का आप उपयोग कर सकते हैं । यह केवल बुनियादी कार्य प्रदान करता है। यदि आप पूरी तरह से फंक्शनल प्रोग्रेसडायलॉग चाहते हैं, तो इस हल्के पुस्तकालय का उपयोग करें ।

ग्रेड सेटअप

मॉड्यूल / build.gradle के लिए निम्न निर्भरता जोड़ें:

compile 'com.lmntrx.android.library.livin.missme:missme:0.1.5'

इसे कैसे उपयोग करे?

उपयोग मूल ProgressDialog के समान है

ProgressDialog progressDialog = new 
progressDialog(YourActivity.this);
progressDialog.setMessage("Please wait");
progressDialog.setCancelable(false);
progressDialog.show();
progressDialog.dismiss();

NB : आपको गतिविधि को ओवरराइड करना चाहिएonBackPressed()

Java8 कार्यान्वयन:

@Override
public void onBackPressed() {
    progressDialog.onBackPressed(
            () -> {
                super.onBackPressed();
                return null;
            }
    );
}

कोटलिन कार्यान्वयन:

override fun onBackPressed() {
   progressDialog.onBackPressed { super.onBackPressed() }
}

1

शायद यह गाइड आपकी मदद कर सके।

आमतौर पर मैं संकेतक के साथ कस्टम अलर्टडायलॉग बनाना पसंद करता हूं। यह ऐप व्यू के कस्टमाइज़ेशन जैसी समस्याओं को हल करता है।


1

यह अन्य लोगों को मदद कर सकता है।

बहुत से लोकप्रिय ऐप्स में नेटवर्क अनुरोध, फ़ाइल लोडिंग आदि जैसी किसी भी चीज़ की प्रगति दिखाने के लिए अलग-अलग दृष्टिकोण हैं। लोडिंग स्पिनर यह नहीं दिखाता है कि लोड करने के लिए कितनी सामग्री लोड या शेष है। अनिश्चितता की अवधि है जो UI / UX के परिप्रेक्ष्य में खराब है। पॉपुलर ऐप्स (फेसबुक, लिंकेडिन आदि) के लॉट ने नंगे हड्डियों के यूआई डिस्प्ले को दिखा कर इस मुद्दे को हल कर दिया है। फिर लोड की गई सामग्री को धीरे-धीरे स्क्रीन पर पॉपुलेट किया जाता है।

मैंने इस समस्या को हल करने के लिए अपने ऐप्स के लिए शिमर का उपयोग किया है ।

इस बारे में एक अच्छा लेख है जो अन्य लोगों के लिए फायदेमंद होगा


0

प्रगति संवाद में, उपयोगकर्ता किसी भी तरह का काम नहीं कर सकता है। प्रगति संवाद के दौरान सभी पृष्ठभूमि प्रक्रियाएं रोक दी जाती हैं। इसलिए, यह प्रगति संवाद के बजाय उपयोगकर्ता प्रगति-बार के लिए उचित है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.