如何改变圆形进度条的颜色?
我在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设置startColor
和endColor
。
现在在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);