android 自定义圆形进度条

时间:2022-09-17 19:54:02

一、通过动画实现

定义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. <rotate xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:drawable="@drawable/spinner_black_16"
  3. android:pivotX="50%"
  4. android:pivotY="50%"
  5. android:fromDegrees="0"
  6. android:toDegrees="360" />

使用方法都一样, 如下:

  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后,图标变大

android 自定义圆形进度条   android 自定义圆形进度条