ProgressBar + AsyncTask (普通的進度條)10秒後完成
阿新 • • 發佈:2019-01-01
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]); } } }