我有一个进度条,其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
我只想要,圆圈应该只按照饼图的进度来填充,而不是所有圆圈。
答案 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。