先上图:
布局文件:
public class MainActivity extends Activity {
private ProgressBar pb;
private TextView tv;
private Button bt;
private boolean flag = true;// 用于控制子线程的执行
private int pb_max;// ProgressBar的最大值
private static final int STEPSIZE = 10;// 设置为每次增长10
private int sum;// 当前的进度
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
sum = sum + STEPSIZE;
if (sum >= pb_max) {
sum = pb_max;
flag = false;
pb.setVisibility(View.INVISIBLE);//完成后让进度条消失
tv.setText("完成");
return;
}
pb.setProgress(sum);
tv.setText((100 * sum / pb_max) + "%");
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
pb = (ProgressBar) findViewById(R.id.pb);
bt = (Button) findViewById(R.id.bt);
pb_max = pb.getMax();
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startProgress();
}
});
}
private void startProgress() {
new Thread() {
@Override
public void run() {
while (flag) {
try {
sleep(1000);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}