一. 简介 1 2 android.view.View   ↳android.widget.ProgressBar 
ProgressBar一般用于显示一个过程,例如数据加载过程,文件下载进度,音乐播放进度等。
ProgressBar有两种样式:
1 2 3 style="@style/Widget.AppCompat.ProgressBar"          style="@style/Widget.AppCompat.ProgressBar.Horizontal"     
二. 属性 1 2 3 4 5 6 7 8 9 10 11 style=""                                                                                   android:max=""                   android:progress=""           android:secondaryProgress=""     android:progressDrawable=""   
三. 自定义progressDrawable 1 2 android:progressDrawable="@drawable/progressbar_bg"  
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <?xml version="1.0" encoding="utf-8"?> <layer-list  xmlns:android ="http://schemas.android.com/apk/res/android" >          <item  android:id ="@android:id/background"           android:drawable ="@color/colorProgress"          />          <item  android:id ="@android:id/secondaryProgress" >          <clip >              <shape >                                   <corners  android:radius ="50dp" />                                                   <gradient                     android:endColor="#D2D2B0"                     android:startColor="#D2D2B0"                     />             </shape >          </clip >      </item >           <item  android:id ="@android:id/progress" >          <clip >              <shape >                                   <corners  android:radius ="50dp" />                                                    <gradient                     android:endColor="#fff000"                     android:startColor="#fff000"                     />             </shape >          </clip >      </item >  </layer-list > 
四. demo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <?xml version="1.0"  encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context=".MainActivity"      android:orientation="vertical"      android:gravity="center" >     <ProgressBar         style="@style/Widget.AppCompat.ProgressBar"          android:layout_width="200dp"          android:layout_height="40dp"  />     <ProgressBar         style="@style/Widget.AppCompat.ProgressBar.Horizontal"          android:layout_width="200dp"          android:layout_height="40dp"          android:layout_marginTop="60dp"          android:max="100"          android:progress="80"          android:progressDrawable="@drawable/progressbar_bg1"          android:secondaryProgress="100"  />     <ProgressBar         android:id="@+id/progress"          style="@style/Widget.AppCompat.ProgressBar.Horizontal"          android:layout_width="200dp"          android:layout_height="40dp"          android:layout_marginTop="60dp"          android:max="100"          android:progress="80"          android:progressDrawable="@drawable/progressbar_bg2"          android:secondaryProgress="100"  /> </LinearLayout>      public  class  MainActivity  extends  AppCompatActivity      @Override      protected  void  onCreate (Bundle savedInstanceState)           super .onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         ProgressBar progressBar = findViewById(R.id.progress);         progressBar.setSecondaryProgress(100 );         progressBar.setMax(100 );         progressBar.setProgress(50 );     } } 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <?xml version="1.0" encoding="utf-8"?> <layer-list  xmlns:android ="http://schemas.android.com/apk/res/android" >          <item  android:id ="@android:id/background"           android:drawable ="@color/colorProgress"          />          <item  android:id ="@android:id/secondaryProgress" >          <clip >              <shape >                                   <corners  android:radius ="50dp" />                                                   <gradient                     android:endColor="#D2D2B0"                     android:startColor="#D2D2B0"                     />             </shape >          </clip >      </item >           <item  android:id ="@android:id/progress" >          <clip >              <shape >                                   <corners  android:radius ="50dp" />                                                    <gradient                     android:endColor="#fff000"                     android:startColor="#fff000"                     />             </shape >          </clip >      </item >  </layer-list > 
运行效果:
五. 补充 1. 动态设置进度和进度条颜色 1 2 3 4 5 private  void  setProgress (int  i, int  color)      ClipDrawable drawable = new  ClipDrawable(new  ColorDrawable(color), Gravity.LEFT, ClipDrawable.HORIZONTAL);     progress.setProgressDrawable(drawable);     progress.setProgress(i); } 
2. 竖起来 设置Rotation旋转就好或者自定义。
参考文章 Android开发之进度条ProgressBar 
Android 实现圆角ProgressBar