如何改变圆形进度条的颜色?

我在Android上使用循环进度条。 我希望改变这个颜色。 我在用

"?android:attr/progressBarStyleLargeInverse" 

样式。 那么如何改变进度条的颜色。

如何自定义样式? 此外,风格的定义是什么?

提前致谢。

在res目录下创build一个xml文件夹,并放入progress.xml文件。

progress.xml

  <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <size android:width="76dip" android:height="76dip" /> <gradient android:type="sweep" android:useLevel="false" android:startColor="#447a29" android:endColor="#447a29" android:angle="0" /> </shape> </rotate> 

根据您的select设置startColorendColor

现在在ProgressBar的背景中设置progress.xml

喜欢这个

 <ProgressBar android:id="@+id/ProgressBar01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background ="@xml/progress"> 

1.首先在资源下的drawable文件夹中创build一个xml文件

命名为“progress.xml”

 <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" > <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false" > <size android:height="76dip" android:width="76dip" /> <gradient android:angle="0" android:endColor="color/pink" android:startColor="@android:color/transparent" android:type="sweep" android:useLevel="false" /> </shape> </rotate> 

2.然后使用下面的代码片段来制作一个进度条

 <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/relativeLayout1" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:indeterminate="true" android:indeterminateDrawable="@drawable/progress" /> 

您可以使用此代码以编程方式更改颜色:

 ProgressBar v = (ProgressBar) findViewById(R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.MULTIPLY); 

如果你想改变ProgressDialog的进度条颜色,你可以使用这个:

 mDilog.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { ProgressBar v = (ProgressBar)mDilog.findViewById(android.R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.MULTIPLY); } }); 

对于API 21和更高版本。 只需设置indeterminateTint属性。 喜欢:

 android:indeterminateTint="@android:color/holo_orange_dark" 

为了支持API 21之前的设备:

 mProgressSpin.getIndeterminateDrawable() .setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN ); 

要添加到Dato的答案,我发现SRC_ATOP是一个更好的filter,因为它更好地支持alpha通道。

 ProgressBar v = (ProgressBar) findViewById(R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP); 

要定制循环ProgressBar,我们需要创build一个indeterminateDrawable来显示自定义进度条

 <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:duration="1"> <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false"> <size android:height="48dip" android:width="48dip" /> <gradient android:centerColor="#f96047" android:centerY="0.50" android:endColor="#fb9c8d" android:startColor="#f72d0c" android:type="sweep" android:useLevel="false" /> </shape> </rotate> 

我们需要在进度条中包含drawable,如下所示:

 <ProgressBar android:layout_width="wrap_content" android:layout_centerInParent="true" style="?android:attr/progressBarStyleLarge" android:visibility="visible" android:progressDrawable="@drawable/widget_progressbar" android:indeterminateDrawable="@drawable/widget_progressbar" android:layout_height="wrap_content" /> 

styles.xml

 <style name="CircularProgress" parent="Theme.AppCompat.Light"> <item name="colorAccent">@color/yellow</item> </style> <ProgressBar android:layout_width="@dimen/d_40" android:layout_height="@dimen/d_40" android:indeterminate="true" style="@style/Widget.AppCompat.ProgressBar" android:theme="@style/CircularProgress"/> 

机器人:indeterminateTint = “@颜色/进度”

对于我主题是不accentColorColor。 但它确实与colorControlActivated一起工作

  <style name="Progressbar.White" parent="AppTheme"> <item name="colorControlActivated">@color/white</item> </style> <ProgressBar android:layout_width="@dimen/d_40" android:layout_height="@dimen/d_40" android:indeterminate="true" android:theme="@style/Progressbar.White"/> 

你可以很容易地使用自定义对话框来做到这一点,重用其他答案的XML:

 <?xml version="1.0" encoding="utf-8"?> 
 <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false" > <size android:height="76dip" android:width="76dip" /> <gradient android:angle="0" android:endColor="@color/oceanBlue" android:startColor="@android:color/transparent" android:type="sweep" android:useLevel="false" /> </shape> 

只要这样做:

 public static class ModifiedProgressDialog extends ProgressDialog { public ModifiedProgressDialog(Context context) { super(context); } @Override public void show() { super.show(); setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress)); } } 

添加到您的活动主题,项目colorControlActivated ,例如:

  <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> ... <item name="colorControlActivated">@color/rocket_black</item> ... </style> 

将这个样式应用于清单中的Activity:

 <activity android:name=".packege.YourActivity" android:theme="@style/AppTheme.NoActionBar"/> 

这对我有用。

 <ProgressBar android:id="@+id/ProgressBar01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/black"/> 

您可以使用以下代码更改您的进度栏颜色:

 progressBar.getProgressDrawable().setColorFilter( getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);