package com.example.progressbar02;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Button;
public class MainActivity extends Activity {
//声明控件的变量
Button startButton = null;
ProgressBar bar = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据控件的Id得到控件的对象,并为控件设置监听器
bar = (ProgressBar)findViewById(R.id.progressBar);
startButton = (Button)findViewById(R.id.startButton);
startButton.setOnClickListener(new ButtonListener());
}
class ButtonListener implements View.OnClickListener {
public void onClick(View v){
bar.setVisibility(View.VISIBLE);
updateBarHandler.post(updateThread);
}
}
//使用匿名内部类来复写Handler当中的handlerMessage方法
Handler updateBarHandler = new Handler(){
//(程序运行到这就不运行了)
public void handlerMessage (Message msg){
System.out.println("Try Test");
bar.setProgress(msg.arg1);
updateBarHandler.post(updateThread);
}
};
//线程类,该类使用匿名内部类方式来进行声明
Runnable updateThread = new Runnable() {
int i=0;
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Begin Thread");
i = i+10;
//得到一个消息对象,Message类是由Android操作系统提供
Message msg = updateBarHandler.obtainMessage();
//姜msg对象的arg1参数的值设置为i;用arg1和arg2两个成员变量传递消息,优点是系统性能消耗较少
msg.arg1 = i;
try {
//设置当前显示睡眠1秒
Thread.sleep(1000);
}catch( InterruptedException e){
e.getStackTrace();
}
//将msg对象加入消息队列中
updateBarHandler.sendMessage(msg);
if(i==100){
//当i的值为100时,就将线程对象从Handler中移除
updateBarHandler.removeCallbacks(updateThread);
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {