我正在尝试创建一个圆形进度条。这就是我想要实现的效果:
有一个灰色背景环,其上方出现一个蓝色进度条,以60秒或其他时间为周期,在圆形路径上从0到360移动。
这是我的示例代码。
<ProgressBar
android:id="@+id/ProgressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="?android:attr/progressBarStyleLarge"
android:indeterminateDrawable="@drawable/progressBarBG"
android:progress="50"
/>
为了实现这一点,在可绘制的"progressBarBG"中,我创建了一个图层列表,该列表内部包含两个如下所示的项目。<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape
android:shape="ring"
android:innerRadius="64dp"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/grey" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape
android:shape="ring"
android:innerRadius="64dp"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/blue" />
</shape>
</clip>
</item>
现在,第一个灰色环已经正确生成。但是蓝色环从绘图区域的左侧开始,并像线性进度条一样向右移动。这就是在50%进度时显示红色箭头表示方向的方式。
我想把蓝色进度条移动到预期的圆形路径上。
getLevel()*360
度的弧形。然后,由于您无法在xml drawable中使用自定义视图,因此您将不得不对ProgressBar进行子类化,以便它直接使用您的自定义Drawable。 - Tenfour04