如何使用循环进度drawable添加数组颜色

时间:2016-04-24 10:02:36

标签: android xml

CircularProgressDrawable

这是我在我的项目中使用的库。 我的方法是:

<com.rey.material.widget.ProgressView
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:id="@+id/progressviewmain"
        app:pv_progressStyle="@style/Material.Widget.ProgressView.Circular"
        app:pv_circular="true"
        android:background="#ffffff"
        app:pv_progressMode="indeterminate"
        app:pv_autostart="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"/>

和代码是:

progressView = (ProgressView)findViewById(R.id.progressviewmain);

功能是:

private void startprogress(ListView listView, ProgressView progressView){
    progressView.setVisibility(View.VISIBLE);
}
    private void stopprogress(ListView listView, ProgressView progressView){
        listView.setVisibility(View.VISIBLE);
        progressView.setVisibility(View.GONE);
    }

所有这一切都运行正常但是在文档中我们可以看到具有2种不同形式的CircularProgressDrawable我无法获得颜色正在变化的第一个。如何输入颜色数组?如何使用attr?

1 个答案:

答案 0 :(得分:4)

正如在doc中所述,您可以使用cpd_strokeColors

为视图数组提供颜色
  

cpd_strokeColors - 颜色数组将用作描边颜色(对于不确定模式)。

更新1: 要更改属性,您需要在res/values/styles.xml中创建样式,如下所示:

<style name="CircularProgress">
        <item name="cpd_padding">0dp</item>
        <item name="cpd_initialAngle">0</item>
        <item name="cpd_maxSweepAngle">270</item>
        <item name="cpd_minSweepAngle">1</item>
        <item name="cpd_strokeSize">4dp</item>
        <item name="cpd_strokeColor">@color/colorAccent</item>
        <item name="cpd_strokeSecondaryColor">@android:color/transparent</item>
        <item name="cpd_reverse">false</item>
        <item name="cpd_strokeColors">@array/rainbow</item>
        <item name="cpd_rotateDuration">1000</item>
        <item name="cpd_transformDuration">600</item>
        <item name="cpd_keepDuration">200</item>
        <item name="cpd_transformInterpolator">@android:anim/decelerate_interpolator</item>
        <item name="pv_progressMode">buffer</item>
        <item name="cpd_inAnimDuration">0</item>
        <item name="cpd_outAnimDuration">@android:integer/config_mediumAnimTime</item>
</style>

然后将其分配给您的视图:

<com.rey.material.widget.ProgressView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/progressviewmain"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        app:pv_autostart="true"
        app:pv_circular="true"
        app:pv_progressMode="indeterminate"
        app:pv_progressStyle="@style/CircularProgress"/>

它会起作用。