ProgressDialog is deprecated.What is the alternate one to use? ProgressDialog is deprecated.What is the alternate one to use? android android

ProgressDialog is deprecated.What is the alternate one to use?


Yes, in API level 26 it's deprecated. Instead, you can use progressBar.

To create it programmatically:

First get a reference to the root layout

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

or

RelativeLayout layout = findViewById(this);

Then add the progress bar

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);

To show the progress bar

progressBar.setVisibility(View.VISIBLE);

To hide the progress bar

progressBar.setVisibility(View.GONE);

To disable the user interaction you just need to add the following code

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

To get user interaction back you just need to add the following code

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

Just for future reference, change the android.R.attr.progressBarStyleSmall to android.R.attr.progressBarStyleHorizontal.

The code below only works above API level 21

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

To create it via 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"/>

In your activity

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

Showing/hiding the progress bar is the same

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

Here is a sample image of what it would look like:

For more details:
1. Reference one
2. Reference Two


you can use AlertDialog as ProgressDialog refer below code for the ProgressDialog. This function you need to call whenever you show a progress dialog.

Code:

    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);    }}

Output:

enter image description here


You can simply design an xml interface for your progressbar and pass it as a view to a AlertDialog, then show or dismiss the dialog anytime you want.

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>

The code code that displays the progress dialog. Just copy this code and paste it your fragment.

  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();        }

Then just call the method whenever you want to show the progressdialog and pass true as an argument to show it or false to dismiss the dialog.