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的结合来更新进度条
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
网友评论