[摘要]本文介绍Android三种实现自定义ProgressBar的方式,并提供详细的示例代码供参考。
一、通过动画实现
定义res/anim/loading.xml如下:
1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <animation-list android:oneshot="false" |
3 | xmlns:android="http://schemas.android.com/apk/res/android"> |
4 | <item android:duration="150" android:drawable="@drawable/loading_01" /> |
5 | <item android:duration="150" android:drawable="@drawable/loading_02" /> |
6 | <item android:duration="150" android:drawable="@drawable/loading_03" /> |
7 | <item android:duration="150" android:drawable="@drawable/loading_04" /> |
8 | <item android:duration="150" android:drawable="@drawable/loading_05" /> |
9 | <item android:duration="150" android:drawable="@drawable/loading_06" /> |
10 | <item android:duration="150" android:drawable="@drawable/loading_07" /> |
11 | </animation-list> |
二、通过自定义颜色实现
定义res/drawable/progress_small.xml如下:
1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <rotate xmlns:android="http://schemas.android.com/apk/res/android" |
3 | android:fromDegrees="0" |
4 | android:pivotX="50%" |
5 | android:pivotY="50%" |
6 | android:toDegrees="360" > |
7 | <shape |
8 | android:innerRadiusRatio="3" |
9 | android:shape="ring" |
10 | android:thicknessRatio="8" |
11 | android:useLevel="false" > |
12 | <gradient |
13 | android:centerColor="#FFFFFF" |
14 | android:centerY="0.50" |
15 | android:endColor="#1E90FF" |
16 | android:startColor="#000000" |
17 | android:type="sweep" |
18 | android:useLevel="false" /> |
19 | </shape> |
20 | </rotate> |
三、使用一张图片进行自定义
定义res/drawable/progress_small.xml如下:
1 | <ProgressBar |
2 | android:layout_width="wrap_content" |
3 | android:layout_height="wrap_content" |
4 | android:indeterminateDrawable="@drawable/progress_small"/> |
使用方法都一样, 如下:
1 | <ProgressBar |
2 | android:layout_width="wrap_content" |
3 | android:layout_height="wrap_content" |
4 | android:indeterminateDrawable="@drawable/progress_small"/> |
也可以根据需要通过设置style来设置其大小! 一般只有使用默认的ProgrressBar的时候采用。对于上述三种自定义的方式,建议修改直接修改图片大小,或者shape;
1 | <ProgressBar |
2 | android:layout_width="wrap_content" |
3 | android:layout_height="wrap_content" |
4 | android:layout_centerInParent="true" |
5 | style="?android:attr/progressBarStyleSmall" |
6 | android:indeterminateDrawable="@drawable/progress_small"/> |
设置成progressBarStyleSmall之后,图标变小;
设置成progressBarStyleLarge之后,图标变大。