1.XML文件添加兩個ProcessBar組件,分別選擇水平/圓形進度條
<ProgressBar android:id="@+id/pb1"
android:layout_width="match_parent"
android:max="100"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_height="wrap_content"/>
<ProgressBar android:id="@+id/pb2"
android:layout_width="wrap_content"
style="@android:attr/progressBarStyleLarge"
android:layout_height="wrap_content"/>
2.Activity文件定義兩個進度條,一個用于表示進度的int變量,一個處理消息的Handler類對象
private ProgressBar hp;
private ProgressBar cp;
private int mProgressStatus =0;
private Handler mHandler;//用于處理消息的Handler對象
3.Oncreate()方法獲取進度條,通過匿名內部類實例化Handler類對象,重寫其handleMessage方法,實現耗時操作未完成的更新進度,以及完成時設置進度條不再顯示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hp =(ProgressBar) findViewById(R.id.pb1);
cp= (ProgressBar)findViewById(R.id.pb2);
mHandler= new Handler(){
@Override
public void handleMessage(Message msg){
if (msg.what==0x111){
hp.setProgress(mProgressStatus);
}
else {
Toast.makeText(MainActivity.this,
"finish", Toast.LENGTH_SHORT).show();
hp.setVisibility(View.GONE);
cp.setVisibility(View.GONE);
}
}
};
4.開啟一個耗時線程,調用sendMessage方法發送處理消息
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
mProgressStatus= doWork();
Message m=new Message();
if(mProgressStatus<100){
m.what=0x111;
mHandler.sendMessage(m);
}
else {
m.what=0x110;
mHandler.sendMessage(m);
break;
}
}
}
private int doWork()
{
mProgressStatus+= Math.random()*10;
try{
Thread.sleep(200);
} catch(InterruptedException e){
e.printStackTrace();
}
return mProgressStatus;
}
}).start();
}