ProgressDialog

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

  • setProgressStyle:设置进度条风格,风格为圆形,旋转的。
mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  • setTitlt:设置标题
  • setMessage:设置提示信息;
  • setIcon:设置标题图标;
  • setIndeterminate:设置ProgressDialog 的进度条是否不明确;这个属性对于ProgressDailog默认的转轮模式没有实际意义,默认下设置为true,它仅仅对带有ProgressBar的Dialog有作用。修改这个属性为false后可以实时更新进度条的进度。
  • setCancelable:设置ProgressDialog 是否可以按返回键取消;
  • CancelListner:当前Dialog强制取消之后将会被执行,通常用来清理未完成的任务。
  • setButton:设置ProgressDialog 的一个Button(需要监听Button事件);
  • show:显示ProgressDialog。
  • cancel:删除progressdialog
  • dismiss: 删除progressdialog 作用和cancel相同
  • setProgress(intCounter);更新进度条,当然一般都需要Handler的结合来更新进度条
ProgressDialog_第1张图片
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 {
        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();
        }
    }
} 

参考文章

ProgressDialog_第2张图片
宁静致远.jpg

你可能感兴趣的:(ProgressDialog)