ProgressDialog

2016-08-10  本文已影响1262人  CalvinNing

Android中很多东西,不经常用,这样很容易导致忘记,偶尔写一下又得研究一番查找一番,这篇文章对ProgressDialog的基本用法做一个笔记。
首先看看progressDialog里面的方法

mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
ProgressDialog.gif
public class MainActivity extends AppCompatActivity {
    private ProgressDialog mDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initProgressDialog(this);
        new myAsyncTask(mDialog).execute();
    }

    private void initProgressDialog(Context context) {
        mDialog = new ProgressDialog(context);
        mDialog.setTitle("正在下载中......");
        mDialog.setMessage("0%");
        mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mDialog.setIndeterminate(false);
        mDialog.setCancelable(false);
    }

    class myAsyncTask extends AsyncTask<Void, Integer, Boolean> {
        private ProgressDialog dialog = null;
        private int progress = 0;

        public myAsyncTask(ProgressDialog dialog) {
            this.dialog = dialog;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog.show();
        }

        @Override
        protected Boolean doInBackground(Void... params) {
            while (progress <= 100) {
                publishProgress(progress);
                try { /*每隔100ms更新一次进度*/
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                progress++;
            } /*模拟下载完成后,3秒后取消 ProgressDialog*/
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return true;
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            dialog.setProgress(values[0]);
            dialog.setMessage(progress + "%");
            if (progress == 100)
                dialog.setTitle("下载完成");
        }

        @Override
        protected void onPostExecute(Boolean aBoolean) {
            super.onPostExecute(aBoolean);
            if (aBoolean)
                dialog.dismiss();
        }
    }
} 

参考文章

宁静致远.jpg
上一篇 下一篇

猜你喜欢

热点阅读