循环进度条像饼图一样前进

时间:2014-04-03 08:36:50

标签: android progress-bar

我有一个进度条,其progressdrawable'drawable / circle_progress.xml'是:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@android:id/progress">
       <rotate
            android:fromDegrees="0"
            android:toDegrees="360"
            android:pivotX="50%"
            android:pivotY="50%" >

            <shape android:shape="oval" >
                <gradient
                    android:centerColor="@color/color_center"
                    android:centerY="0.50"
                    android:endColor="@color/color_end"
                    android:startColor="@color/color_start"
                    android:type="sweep" /> 
            </shape>

        </rotate>

    </item>

</layer-list>

我在xml中的进度条如下:

<ProgressBar
    android:id="@+id/progressBarCircle"
    style="?android:attr/progressBarStyleHorizontal"
    android:indeterminate="false"
    android:progressDrawable="@drawable/circle_progress"
    android:max="100" />

这是进度条的图像,进度为90%。当我增加进度时,它会按进度的数量旋转。

sample http://www.tiemenschut.com/wp-content/uploads/2013/04/radar.png

我只想要,圆圈应该只按照饼图的进度来填充,而不是所有圆圈。

1 个答案:

答案 0 :(得分:1)

对于那些想知道如何实施this Drawable class的人,我找到了方法。在我的情况下,我不得不使用Pie Progress Drawable来显示倒数计时器的进度,每秒更新一次drawable。为此,我创建了一个PieProgressDrawable类的实例并将其设置为ImageView:

PieProgressDrawable pieProgressDrawable = new PieProgressDrawable();
ImageView timeProgress = (ImageView) findViewById(R.id.time_progress);
timeProgress.setImageDrawable(pieProgressDrawable);

为了每秒更新进度,我在PieProgressDrawable实例上调用setLevel(),然后在托管此PieProgressDrawable实例的ImageView上使用invalidate()。像这样:

pieProgressDrawable.setLevel(progress);
timeProgress.invalidate();

如果有人需要一些指导我写了一篇关于它的教程here