लोडिंग स्पिनर दिखाने का सबसे अच्छा तरीका क्या है जबकि ऐप सर्वर से प्रतिक्रिया के लिए इंतजार कर रहा है?
क्या यह प्रोग्रामिक रूप से किया जा सकता है? ताकि मुझे xml फ़ाइल में लोड स्पिनर जोड़ने की आवश्यकता न हो?
लोडिंग स्पिनर दिखाने का सबसे अच्छा तरीका क्या है जबकि ऐप सर्वर से प्रतिक्रिया के लिए इंतजार कर रहा है?
क्या यह प्रोग्रामिक रूप से किया जा सकता है? ताकि मुझे xml फ़ाइल में लोड स्पिनर जोड़ने की आवश्यकता न हो?
जवाबों:
ProgressDialog को Android Oreo से हटा दिया गया है। इसके बजाय प्रोग्रेसबार का उपयोग करें
ProgressDialog progress = new ProgressDialog(this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading...");
progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
progress.show();
// To dismiss the dialog
progress.dismiss();
या
ProgressDialog.show(this, "Loading", "Wait while loading...");
वैसे, एंड्रॉइड में स्पिनर का एक अलग अर्थ है। (यह HTML में चुनिंदा ड्रॉपडाउन की तरह है)
progress.setCancelable(false);
।
ProgressDialog
Android O डेवलपर.
API Level 26 https://developer.android.com/reference/android/app/ProgressDialog.html के बाद से ProgressDialog पदावनत हो गया है
मैं अपने लेआउट में एक ProgressBar शामिल करता हूं
<ProgressBar
android:layout_weight="1"
android:id="@+id/progressBar_cyclic"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="40dp"
android:minWidth="40dp" />
और इसकी दृश्यता को बदल दें ।GONE | .VISIBLE उपयोग के मामले पर निर्भर करता है।
progressBar_cyclic.visibility = View.VISIBLE
उपयोग ProgressDialog
ProgressDialog.show(Context context, CharSequence title, CharSequence message);
हालाँकि यह आज (2013) का एक विरोधी पैटर्न माना जाता है: http://www.youtube.com/watch?v=pEGWcMTxs3I
ProgressDialog
Android O डेवलपर.
वास्तव में यदि आप किसी सर्वर से प्रतिक्रिया की प्रतीक्षा कर रहे हैं तो इसे प्रोग्रामेटिक रूप से किया जाना चाहिए । आप एक प्रगति संवाद बना सकते हैं और इसे खारिज कर सकते हैं, लेकिन फिर वह "एंड्रॉइड वे" नहीं है।
वर्तमान में अनुशंसित विधि एक DialogFragment का उपयोग करने के लिए है :
public class MySpinnerDialog extends DialogFragment {
public MySpinnerDialog() {
// use empty constructors. If something is needed use onCreate's
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
_dialog = new ProgressDialog(getActivity());
this.setStyle(STYLE_NO_TITLE, getTheme()); // You can use styles or inflate a view
_dialog.setMessage("Spinning.."); // set your messages if not inflated from XML
_dialog.setCancelable(false);
return _dialog;
}
}
फिर आपकी गतिविधि में आप अपना फ्रैगमेंट मैनेजर सेट करते हैं और सर्वर के शुरू होने के बाद एक बार डायलॉग दिखाते हैं :
FragmentManager fm = getSupportFragmentManager();
MySpinnerDialog myInstance = new MySpinnerDialog();
}
myInstance.show(fm, "some_tag");
एक बार जब आपका सर्वर पूरा जवाब दे देता है तो आप इसे खारिज कर देंगे:
myInstance.dismiss()
याद रखें कि प्रगतिदल एक स्पिनर है या विशेषताओं के आधार पर प्रगति करने वाला है, एपीआई गाइड पर अधिक पढ़ें
ProgressDialog
Android O डेवलपर.
यह मैंने ऐसा किया है ताकि एक समय में केवल एक ही प्रगति संवाद खुला रह सके। सूरज बजाज के जवाब के आधार पर
private ProgressDialog progress;
public void showLoadingDialog() {
if (progress == null) {
progress = new ProgressDialog(this);
progress.setTitle(getString(R.string.loading_title));
progress.setMessage(getString(R.string.loading_message));
}
progress.show();
}
public void dismissLoadingDialog() {
if (progress != null && progress.isShowing()) {
progress.dismiss();
}
}
मुझे भी इस्तेमाल करना था
protected void onResume() {
dismissLoadingDialog();
super.onResume();
}
ProgressDialog
Android O डेवलपर.