content_main.xml布局
<? xml version= "1.0" encoding= "utf-8" ?>
<LinearLayout xmlns: android ="http://schemas.android.com/apk/res/android"
android :orientation= "vertical"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
>
<LinearLayout
android :orientation= "horizontal"
android :layout_width= "match_parent"
android :layout_height= "wrap_content" >
<!--定义一个大环形进度条-->
<ProgressBar
android :layout_width= "wrap_content"
android :layout_height= "wrap_content"
style= "@android:style/Widget.ProgressBar.Large"
/>
<!--定义中等大小环形进度条-->
<ProgressBar
android :layout_width= "wrap_content"
android :layout_height= "wrap_content"
/>
<ProgressBar
android :layout_width= "wrap_content"
android :layout_height= "wrap_content"
style= "@android:style/Widget.ProgressBar.Small"
/>
</LinearLayout>
<TextView
android:layout_width= "match_parent"
android:layout_height= "wrap_content"
android:text= "任务完成的进度"
/>
<!--定义一个水平进度条-->
<ProgressBar
android :id= "@+id/bar"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :max= "100"
style= "@android:style/Widget.ProgressBar.Horizontal"
/>
<!--定义一个水平进度条,并且改变轨道外观-->
<ProgressBar
android :id= "@+id/bar2"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :max= "100"
android :progressDrawable= "@drawable/ok"
style= "@android:style/Widget.ProgressBar.Horizontal"
/>
</LinearLayout>
drawable/my_bar.xml
<? 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= "@drawable/no" />
<!--定义轨道已完成部分的样式-->
< item
android :id= "@android:id/progress"
android :drawable= "@drawable/ok" />
</layer-list>
主程序ProgressBar
package com.eson.progressbar ;
import android.os.Bundle ;
import android.os.Handler ;
import android.os.Message ;
import android.support.v7.app.AppCompatActivity ;
import android.widget.ProgressBar ;
public class ProgressBarTest extends AppCompatActivity {
//该程序模拟填充长度为100的数组
private int [] data= new int [100 ] ;
int hasData = 0;
//记录ProgressBar的进度
int status =0 ;
ProgressBar bar ,bar2 ;
//创建一个负责更新的进度表
Handler handler =new Handler(){
@Override
public void handleMessage (Message msg) {
if (msg. what== 0x111 ){
bar.setProgress( status );
bar2.setProgress( status );
}
}
};
@Override
protected void onCreate (Bundle savedInstanceState) {
super .onCreate(savedInstanceState) ;
setContentView(R.layout. content_main );
bar = (ProgressBar) findViewById(R.id. bar );
bar2 = (ProgressBar) findViewById(R.id. bar2 );
//启动线程来执行任务
new Thread() {
@Override
public void run () {
while ( status <100 ){
//获取耗时操作的百分比
status=doWork() ;
//发送消息
handler.sendEmptyMessage( 0x111 );
}
}
}.start();
}
//模拟一个耗时的操作
public int doWork () {
//为数组元素赋值
data [ hasData++]= ( int ) (Math.random ()*100 ) ;
try{
Thread.sleep (100 ) ;
} catch (Exception e){
e.printStackTrace() ;
}
return hasData ;
}
}