2016-04-24 70 views
1

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); 
    } 

所有这一切工作正常,但因为在文档中,我们可以看到CircularProgressDrawable 2不同的形式,我无法获得第一个颜色在改变。如何给颜色数组输入?如何使用attr?

回答

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"/> 

它将工作。

+0

其实我很新手所以请你能告诉我执行的方法 –

+0

其实怎样从xml或java调用cpd_strokeColors ...........我想在XML中使用它我不能这样做,也没有任何方法在Java中命名为 –

+0

我认为这将是这样的: 'app:cpd_strokeColors =“@ color/rainbow”' while 'rainbow'是'res/values/colors.xml'中颜色数组的名称,它就像: '' ' @ color/bright_pink' ' @ color /红色'' @色/橙色'' @颜色/黄色'' '