使用handler处理progressbar
1.设置布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ProgressBar android:id="@+id/ProgressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="200dp" android:layout_height="wrap_content" android:visibility="gone" /> <Button android:id="@+id/Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始"/> </LinearLayout>
?
2.处理progressbar的类
public class ProgressBarTestActivity extends Activity {/** Called when the activity is first created. */private ProgressBar bar;private Button startButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 得到ProgressBarbar = (ProgressBar) findViewById(R.id.ProgressBar);startButton = (Button) findViewById(R.id.Button);// 当按钮按下时开始执行startButton.setOnClickListener(new ButtonListener());}class ButtonListener implements OnClickListener {public void onClick(View v) {bar.setVisibility(View.VISIBLE);updateBarHandler.post(updateThread);}}Handler updateBarHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {bar.setProgress(msg.arg1);updateBarHandler.post(updateThread);}};Runnable updateThread = new Runnable() {int i = 0;public void run() {System.out.println("begin thread");i = i + 10;// 得到一个消息对象Message msg = updateBarHandler.obtainMessage();msg.arg1 = i;try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}updateBarHandler.sendMessage(msg);if (i == 100) {updateBarHandler.removeCallbacks(updateThread);}}};}?效果如图:

?