ProgressDialog为进度对话框。android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西。


一: progressDialog里的方法:

setProgressStyle:设置进度条风格,风格为圆形,旋转的。
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的使用

ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。

ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show()。


  1. //方式一:newDialog
  2. finalProgressDialogdialog=newProgressDialog(this);
  3. dialog.show();


  1. //方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容
  2. ProgressDialogdialog2=ProgressDialog.show(this,"提示","正在登陆中");

  1. //方式三使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数booleanindeterminate设置是否是不明确的状态
  2. ProgressDialogdialog3=ProgressDialog
  3. .show(this,"提示","正在登陆中",false);

  1. //方式四使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数booleancancelable设置是否进度条是可以取消的
  2. ProgressDialogdialog4=ProgressDialog.show(this,"提示","正在登陆中",
  3. false,true);

  1. //方式五使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数DialogInterface.OnCancelListener
  2. //cancelListener用于监听进度条被取消
  3. ProgressDialogdialog5=ProgressDialog.show(this,"提示","正在登陆中",true,
  4. true,cancelListener);

方式五中需要一个cancelListener,代码如下;

[java] view plain copy
  1. privateOnCancelListenercancelListener=newOnCancelListener(){
  2. @Override
  3. publicvoidonCancel(DialogInterfacedialog){
  4. Toast.makeText(MainActivity.this,"进度条被取消",Toast.LENGTH_LONG).show();
  5. }
  6. };
三: ProgressDialog的样式有两种,一种是圆形进度条状态,一种是水平进度条状态

第一种方式:圆形进度条

[java] view plain copy
  1. finalProgressDialogdialog=newProgressDialog(this);
  2. dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置进度条的形式为圆形转动的进度条
  3. dialog.setCancelable(true);//设置是否可以通过点击Back键取消
  4. dialog.setCanceledOnTouchOutside(false);//设置在点击Dialog外是否取消Dialog进度条
  5. dialog.setIcon(R.drawable.ic_launcher);//
  6. //设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的
  7. dialog.setTitle("提示");
  8. //dismiss监听
  9. dialog.setOnDismissListener(newDialogInterface.OnDismissListener(){
  10. @Override
  11. publicvoidonDismiss(DialogInterfacedialog){
  12. }
  13. });
  14. //监听Key事件被传递给dialog
  15. dialog.setOnKeyListener(newDialogInterface.OnKeyListener(){
  16. @Override
  17. publicbooleanonKey(DialogInterfacedialog,intkeyCode,KeyEventevent){
  18. returnfalse;
  19. }
  20. });
  21. //监听cancel事件
  22. dialog.setOnCancelListener(newDialogInterface.OnCancelListener(){
  23. @Override
  24. publicvoidonCancel(DialogInterfacedialog){
  25. }
  26. });
  27. //设置可点击的按钮,最多有三个(默认情况下)
  28. dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定",
  29. newDialogInterface.OnClickListener(){
  30. @Override
  31. publicvoidonClick(DialogInterfacedialog,intwhich){
  32. }
  33. });
  34. dialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消",
  35. newDialogInterface.OnClickListener(){
  36. @Override
  37. publicvoidonClick(DialogInterfacedialog,intwhich){
  38. }
  39. });
  40. dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"中立",
  41. newDialogInterface.OnClickListener(){
  42. @Override
  43. publicvoidonClick(DialogInterfacedialog,intwhich){
  44. }
  45. });
  46. dialog.setMessage("这是一个圆形进度条");
  47. dialog.show();
  48. newThread(newRunnable(){
  49. @Override
  50. publicvoidrun(){
  51. try{
  52. Thread.sleep(5000);
  53. dialog.cancel();
  54. //dialog.dismiss();
  55. }catch(InterruptedExceptione){
  56. e.printStackTrace();
  57. }
  58. }
  59. }).start();

  60. 其中通过Thread.sleep(5000)模拟后台操作。

    cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是:调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,而dismiss方法会回掉OnDismissListener


第二种方式:水平进度条

[java] view plain copy
  1. //进度条还有二级进度条的那种形式,这里就不演示了
  2. finalProgressDialogdialog=newProgressDialog(this);
  3. dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平进度条
  4. dialog.setCancelable(true);//设置是否可以通过点击Back键取消
  5. dialog.setCanceledOnTouchOutside(false);//设置在点击Dialog外是否取消Dialog进度条
  6. dialog.setIcon(R.drawable.ic_launcher);//设置提示的title的图标,默认是没有的
  7. dialog.setTitle("提示");
  8. dialog.setMax(100);
  9. dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定",
  10. newDialogInterface.OnClickListener(){
  11. @Override
  12. publicvoidonClick(DialogInterfacedialog,intwhich){

  13. }
  14. });
  15. dialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消",
  16. newDialogInterface.OnClickListener(){
  17. @Override
  18. publicvoidonClick(DialogInterfacedialog,intwhich){

  19. }
  20. });
  21. dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"中立",
  22. newDialogInterface.OnClickListener(){
  23. @Override
  24. publicvoidonClick(DialogInterfacedialog,intwhich){
  25. }
  26. });
  27. dialog.setMessage("这是一个水平进度条");
  28. dialog.show();
  29. newThread(newRunnable(){
  30. @Override
  31. publicvoidrun(){
  32. inti=0;
  33. while(i<100){
  34. try{
  35. Thread.sleep(200);
  36. //更新进度条的进度,可以在子线程中更新进度条进度
  37. dialog.incrementProgressBy(1);
  38. //dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式
  39. i++;
  40. }catch(Exceptione){
  41. }
  42. }
  43. //在进度条走完时删除Dialog
  44. dialog.dismiss();
  45. }
  46. }).start();

更多相关文章

  1. Android之ExpandableListView的属性(Group不展开)
  2. 2011.07.12(3)——— android ui的一些概念
  3. Android(安卓)OpenGL ES 简明开发教程二:构造OpenGL ES View
  4. Android中显示gif动画
  5. Android(安卓)GradientDrawable类的详解,设置activity的背景颜色
  6. Android(安卓)WebView属性及用法
  7. (持续更新, 目前含100+工具类) DevUtils 是一个 Android(安卓)工
  8. 通过EventBus更换android app主题
  9. Android强大的图片加载框架Fresco简单用法

随机推荐

  1. android 获取通讯模块制式类型
  2. android 实现圆形头像
  3. 初学Android,从手势库识别手势(五十一)
  4. android 控件背景添加圆角
  5. Android 应用签名
  6. Android调试工具之Logcat
  7. android部分BUG
  8. Android Studio 项目运行错误,弹出“Detec
  9. Android-8.1.0编译问题汇总
  10. Android调用系统 Set As Intent