首页 > 代码库 > [Android UI] ProgressBar自定义

[Android UI] ProgressBar自定义

转载自:http://gundumw100.iteye.com/blog/1289348

1: 在JAVA代码中

在java代码中 ProgressBar      继承自View, 在android.widegt包中

                 ProgressDialog   继承自Dialog, 在 android.app包中。

 

2: 在XML文件中

ProgressBar 默认是圆形转圈。
当为ProgressBar设置style="?android:attr/progressBarStyleHorizontal",后ProgressBar变成水平进度条,可以设置progress 和maxprogress

ProgressBar 在默认情况下,如果设置其它的style:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>                    中等大小
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>           大
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>           小

a: 通过动画实现自定义ProgressBar

定义res/anim/loading.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:duration="150" android:drawable="@drawable/loading_01" />
  <item android:duration="150" android:drawable="@drawable/loading_02" />
  <item android:duration="150" android:drawable="@drawable/loading_03" />
  <item android:duration="150" android:drawable="@drawable/loading_04" />
  <item android:duration="150" android:drawable="@drawable/loading_05" />
  <item android:duration="150" android:drawable="@drawable/loading_06" />
  <item android:duration="150" android:drawable="@drawable/loading_07" />
</animation-list> 

在layout文件中引用如下:

<ProgressBar
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:indeterminate="false" 
  android:indeterminateDrawable="@anim/loading" />


b:通过自定义颜色实现

定义res/drawable/dialog_style_xml_color.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" >
        <gradient
            android:centerColor="#FFDC35"
            android:centerY="0.50"
            android:endColor="#CE0000"
            android:startColor="#FFFFFF"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>

在layout文件中引用如下:

<ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:indeterminateDrawable="@drawable/dialog_style_xml_color"
        android:indeterminate="false"
android:indeterminateDuration="1000"
android:layout_marginTop="155dp" />

c、使用一张图片进行自定义

定义res/drawable/dialog_style_xml_icon.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <rotate
            android:drawable="@drawable/dx_loading_dialog_rotate_img"
            android:fromDegrees="0.0"
            android:pivotX="50.0%"
            android:pivotY="50.0%"
            android:toDegrees="360.0" />
    </item>

</layer-list>


在layout文件中引用如下:

<ProgressBar
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content"
   android:indeterminate="false" android:indeterminateDrawable="@drawable/dialog_style_xml_icon" />

d: <animated-rotate/>旋转一张图片:

res/drawable/custom_progress_draw.xml:

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/circular"
    android:pivotX="50%"
    android:pivotY="50%" />
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/circular"
    android:pivotX="50%"
    android:pivotY="50%" />