1. 程式人生 > >ProgressBar + AsyncTask (普通的進度條)10秒後完成

ProgressBar + AsyncTask (普通的進度條)10秒後完成

xml 佈局簡單就不給出了

下面是 java 程式碼

package com.xiaoxiong.summer;

import android.R;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

public class ProgressBarActivity extends Activity {

	private ProgressBar progerss_nomal;
	private Button btn_start;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	    setContentView(com.xiaoxiong.summer.R.layout.progress);
		progerss_nomal = (ProgressBar)findViewById(com.xiaoxiong.summer.R.id.progressBar_nomal);
	    btn_start =(Button)findViewById(com.xiaoxiong.summer.R.id.button_start);
	    btn_start.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
//				   ProgressTask task = new ProgressTask();
//				   task .execute("hello world");
				new ProgressTask().execute("helloworld");
			}
		});
	}
///*	AsyncTask的建構函式有三個模板引數
//	params 傳遞給後臺任務的資料型別
//	Progress 後臺任務的引數的型別
//	Result 後臺執行返回的結果型別
//	AsyncTask並不總是需要使用上面的全部3種類型。標識不使用的型別很簡單,只需要使用Void型別即可。*/
	class ProgressTask extends AsyncTask<String ,Integer,String>{
		@Override
		protected String doInBackground(String... arg0) {
			//處理後臺任務,在後臺執行緒執行  不能再此 有操作UI的操作
			progerss_nomal.setProgress(0); // 進度條復位
					int i = 0;
					for (i = 0; i <= 100; i++) {
						publishProgress(i); // 將會呼叫onProgressUpdate方法
                        try {
							Thread.sleep(50);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
						 return arg0[0];
		}
		@Override
		protected void onPostExecute(String result) {//執行完成後
			Toast.makeText(ProgressBarActivity.this,result , Toast.LENGTH_SHORT).show();
			progerss_nomal.setProgress(0);
		}
		@Override
		protected void onPreExecute() {//在 doInBackground(Params...)之前被呼叫,在ui執行緒執行 
			progerss_nomal.setProgress(0); // 進度條復位
			Toast.makeText(ProgressBarActivity.this,"執行完畢後輸出 helloworld" , Toast.LENGTH_SHORT).show();
		}
		@Override
		protected void onProgressUpdate(Integer... values) {
			progerss_nomal.setProgress(values[0]);
		}
		
	}
}