Android进度条学习二

package tw.android;

import java.util.Calendar;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;

public class Main extends Activity {

    private Button mBtnProgDlg;
    private Handler mHandler = new Handler();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        setupViewComponent();
    }
    
    private void setupViewComponent() {
        mBtnProgDlg = (Button)findViewById(R.id.btnProgDlg);
        mBtnProgDlg.setOnClickListener(btnProgDlgOnClkLis);
    }

    private Button.OnClickListener btnProgDlgOnClkLis = new Button.OnClickListener() {
        public void onClick(View v) {
            final ProgressDialog progDlg = new ProgressDialog(Main.this);
            progDlg.setTitle("进度条");
            progDlg.setMessage("进度...");
            progDlg.setIcon(android.R.drawable.ic_dialog_info);
            progDlg.setCancelable(false);
            progDlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progDlg.setMax(100);
            progDlg.show();
            
            new Thread(new Runnable() {
                 public void run() {
                       Calendar begin = Calendar.getInstance();
                        do {
                            Calendar now = Calendar.getInstance();
                            final int iDiffSec = 60 * (now.get(Calendar.MINUTE) - begin.get(Calendar.MINUTE)) +
                                            now.get(Calendar.SECOND) - begin.get(Calendar.SECOND);
                
                            if (iDiffSec * 2 > 100) {
                                mHandler.post(new Runnable() {
                                    public void run() {
                                        progDlg.setProgress(100);
                                    }
                                });
                                
                                break;
                            }
                            
                            mHandler.post(new Runnable() {
                                public void run() {
                                    progDlg.setProgress(iDiffSec * 2);
                                }
                            });
                            
                            if (iDiffSec * 4 < 100)
                                mHandler.post(new Runnable() {
                                    public void run() {
                                        progDlg.setSecondaryProgress(iDiffSec * 4);
                                    }
                                });
                            else
                                mHandler.post(new Runnable() {
                                    public void run() {
                                        progDlg.setSecondaryProgress(100);
                                    }
                                });
                        } while (true);
                        
                        progDlg.cancel();
                   }
            }).start();
        }
    };
}
以上是ProgressDialog代码,ProgressDialog 是需要的时候才显示,工作完后就消失。
原文地址:https://www.cnblogs.com/zhoujn/p/4155022.html