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:
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.