package com.example.progressbartest;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.ProgressBar;
public class MainActivity extends ActionBarActivity {
private int[] data = new int[100];
int hasData = 0;
int status = 0;
ProgressBar bar, bar2;
Handler mHandler = new Handler() {
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.activity_main);
bar=(ProgressBar) findViewById(R.id.bar);
bar2=(ProgressBar) findViewById(R.id.bar2);
new Thread()
{
public void run() {
while(status<100){
status=doWork();
mHandler.sendEmptyMessage(0x111);
}
}
}.start();
}
public int doWork(){
data[hasData++]=(int)(Math.random()*100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return hasData;
}
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x111) {//消息類型,與sendEmptyMessage(0x111)中傳輸的消息類型0x111是一致的
bar.setProgress(status);//根據隨機的數目更新進度條
bar2.setProgress(status);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar=(ProgressBar) findViewById(R.id.bar);
bar2=(ProgressBar) findViewById(R.id.bar2);
new Thread()
{
public void run() {
while(status<100){
status=doWork();//產生一百個隨機數個數
mHandler.sendEmptyMessage(0x111);//因為在thread中是無法直接更新UI的,必須在UI現場中才能更新,所以通過handler發送消息,該消息由handler的handleMessage接收
}
}
}.start();
}
public int doWork(){
data[hasData++]=(int)(Math.random()*100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return hasData;
}