androidmaterial-designandroid-progressbarprogress-indicator

How to have a ProgressBar circular and in determinate mode?


I have to download some images and videos on the device and I like to track the progress by having a circular ProgressBar in determinate mode in overlay to them.

The problem is that, no matter what, the ProgressBar is still indeterminate.

Is there a way to have it circular and in determinate mode?

Layout

<ProgressBar
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:progressTint="@color/colorPrimary"
                android:indeterminate="false"
                android:max="100"
                android:layout_gravity="center"
                android:id="@+id/message_media_preview_progress"
                android:visibility="gone"
                />

Code

final ProgressBar progressBar = (ProgressBar) mView.findViewById(R.id.message_media_preview_progress);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
storageController.downloadMedia(context, message.getVideoFile(),
        new ProgressListener<Integer>() {
            @Override
            public void onResult(Integer result) {
                progressBar.setProgress(result);
            }
        },
        new ResultListener<Boolean>() {
            @Override
            public void onResult(Boolean result) {
                if(result) {
                    progressBar.setVisibility(View.GONE);
                    setMediaClickListener(message);
                }else{
                    Toast.makeText(context,"Error downloading file",Toast.LENGTH_SHORT).show();
                }
            }
        });

Solution

  • Unfortunately, this is not possible with stock Android ProgressBar. Look for external libraries like:

    http://github.com/dinuscxj/CircleProgressBar