如何显示水平的Android不确定进度条。

51
如何在安卓中显示一条水平不确定进度条? 进度条的动画应该从0开始到100,然后持续地从100返回到0。我不需要圆形的进度条。

我不同意:问题是关于编程的,所以问题在哪里?我真的无法理解降级的原因。 - Barmaley
我在这里发布了一个示例实现:https://dev59.com/OG025IYBdhLWcg3wST-Q - Todd Davies
5个回答

47

我已经知道setIndeterminate会提供一个无限水平进度条。但它将类似于加载轮,只是它是水平的。如果您看到我的问题,我正在寻找从0开始并一直到100的水平进度条(逐渐增加)。如果要在Android中实现此目标,必须按以下方式使用进度条:

 <ProgressBar
    android:id="@+id/progress_horizontal"
    android:indeterminateOnly="false"
    android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal"
    android:progressDrawable="@drawable/progress_horizontal"
    android:minHeight="24dip"
    android:maxHeight="24dip" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

为了改变进度条的背景,我修改了ProgressDrawable和IndeterminateDrawable。原始的可绘制对象位于frameworks/base/core/res/res/drawable。将它们复制到您的项目中,并根据您的需要更改颜色。

创建一个线程来更新进度计数并执行Thread.Sleep。然后,它发送消息给Handler,该Handler将在UI线程中更新进度条。


2
你只需要在你的ProgressBar中添加这2行代码android:indeterminate="true"style="@style/Widget.AppCompat.ProgressBar.Horizontal" - Panos Gr

16

14

也许有点晚了,但你可以像这样做:

<ProgressBar
    android:id="@+id/progress"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:indeterminate="true"
    style="?android:attr/progressBarStyleHorizontal" />

希望对某些人有帮助!


9

在扩展Vinoth的答案上,这是一段准备好的代码:

<ProgressBar
        android:id="@+id/progressBarLoadingRecite"
        android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
        android:minHeight="24dip"
        android:layout_marginTop="20dip"
        android:indeterminate="true"
        android:maxHeight="24dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

5
在定义进度条的xml中,您可以添加。
style="@android:style/Widget.ProgressBar.Horizontal"

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