如何使进度条呈圆形且为不确定模式?

5

我需要在设备上下载一些图片和视频,并且想要通过将一个圆形的ProgressBar以确定模式叠加在它们之上来跟踪进度。

问题是,无论如何,这个ProgressBar仍处于不确定状态。

有没有办法让它既是圆形的又是确定模式?

布局

<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"
                />

代码

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

抱歉,使用原生的Android ProgressBar是不可能的。请寻找外部库:https://github.com/dinuscxj/CircleProgressBar - R. Zagórski
好的,非常感谢。如果您将评论放在答案中,我会将其标记为已接受。 - Jackie Degl'Innocenti
已经写下了答案。 - R. Zagórski
2
这个回答解决了你的问题吗?如何在确定模式下使用Android ProgressBar? - Mahozad
请注意,尽管重复的问题是关于水平进度条的,但它现在有一个回答解释了如何为圆形进度条做到这一点。 - Ryan M
3个回答

4

1
现在,在Material Design库的新版本中,可以使用确定性的圆形进度条:
<com.google.android.material.progressindicator.CircularProgressIndicator
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

请参考这里获取更多信息。

0

改变进度条的可见性。

  1. 为进度条分配ID。
  2. 当下载按钮被点击时,进度条将变为可见。
  3. 当收到结果后,进度条将消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接