1. 程式人生 > >android 簡單自定義環形進度條

android 簡單自定義環形進度條

一、通過動畫實現

定義res/anim/loading.xml如下:
[html] view plaincopyprint?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <animation-listandroid:oneshot="false"
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4.   <itemandroid:duration="150"android:drawable="@drawable/loading_01"/>
  5.   <itemandroid:duration
    ="150"android:drawable="@drawable/loading_02"/>
  6.   <itemandroid:duration="150"android:drawable="@drawable/loading_03"/>
  7.   <itemandroid:duration="150"android:drawable="@drawable/loading_04"/>
  8.   <itemandroid:duration="150"android:drawable="@drawable/loading_05"/>
  9.   <itemandroid:duration="150"android:drawable
    ="@drawable/loading_06"/>
  10.   <itemandroid:duration="150"android:drawable="@drawable/loading_07"/>
  11. </animation-list>


二、通過自定義顏色實現

定義res/drawable/progress_small.xml如下:

[html] view plaincopyprint?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <rotatexmlns: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如下: [html] view plaincopyprint?
  1. <rotatexmlns: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"/>


使用方法都一樣, 如下:

[html] view plaincopyprint?
  1. <ProgressBar
  2.     android:layout_width="wrap_content"
  3.     android:layout_height="wrap_content"
  4.     android:indeterminateDrawable="@drawable/progress_small"/>


也可以根據需要通過設定style來設定其大小! 一般只有使用預設的ProgrressBar的時候採用。對於上述三種自定義的方式,建議修改直接修改圖片大小,或者shape;

[html] view plaincopyprint?
  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後,圖示變大