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 是需要的时候才显示,工作完后就消失。

你可能感兴趣的:(android)