关于Android中ProgressDialog的简单使用可以看这里
Android中ProgressDialog的应用
Android之ProgressDialog的使用

关于Android ProgressBar & ProgressDialog 的详解可以看这里的讲解
【详解】Android ProgressBar ProgressDialog 进度条 进度条对话框
关于ProgressBar与ProgressDialog的区别可以看这里的解释
ProgressBar与ProgressDialog的区别
ProgressDialog 和 ProgressBar 个人使用
android中ProgressDialog与ProgressBar的使用详解

ProgressDialog类似于ProgressBar类,用于显示一个过程,通常用于耗时操作。
ProgressDialog有这样几个方法介绍:
1.setMax()设置对话框中进度条的最大值。
2.setTile()设置标题。
3.setProgressStyle()设置对话框中进度条的样式。例如:环形和水平。
参数:
ProgressDialog.STYLE_SPINNER 环形精度条
ProgressDialog.STYLE_HORIZONTAL 水平样式的进度条
4.setMessage()设置显示的内容。
一个简单的ProgressDialog的使用
首先是布局文件,
activity.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity"    android:orientation="vertical"    >   <Button       android:id="@+id/btn"       android:layout_width="match_parent"       android:layout_height="wrap_content" />LinearLayout>

MainActivity中代码

 public void onClick(View v)         {             final ProgressDialog proDialog = android.app.ProgressDialog.show(MainActivity.this, "测试", "3秒后自动消失!");             Thread thread = new Thread()             {                 public void run()                 {                     try                     {                         sleep(3000);                     } catch (InterruptedException e)                     {                         // TODO 自动生成的 catch 块                         e.printStackTrace();                     }                     proDialog.dismiss();//万万不可少这句,否则会程序会卡死。                 }             };             thread.start();         }     };

圆形进度条的实现.

public void onClick(View view) {                final ProgressDialog dialog = new ProgressDialog(MainActivity.this);                dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条                dialog.setCancelable(true);// 设置是否可以通过点击Back键取消                dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条                // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的                dialog.setTitle("提示");                // dismiss监听                dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {                    @Override                    public void onDismiss(DialogInterface dialog) {                        // TODO Auto-generated method stub                    }                });                // 监听Key事件被传递给dialog                dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {                    @Override                    public boolean onKey(DialogInterface dialog, int keyCode,                                         KeyEvent event) {                        // TODO Auto-generated method stub                        return false;                    }                });                // 监听cancel事件                dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {                    @Override                    public void onCancel(DialogInterface dialog) {                        // TODO Auto-generated method stub                    }                });                //设置可点击的按钮,最多有三个(默认情况下)                dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setMessage("这是一个圆形进度条");                dialog.show();                Thread thread = new Thread()                {                    public void run()                    {                        try                        {                            sleep(2000);                        } catch (InterruptedException e)                        {                            // TODO 自动生成的 catch 块                            e.printStackTrace();                        }                        // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是                        // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉                        dialog.cancel();//                        dialog.dismiss();                    }                };                thread.start();            }

水平进度条.

final ProgressDialog dialog = new ProgressDialog(MainActivity.this);                dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条                dialog.setCancelable(true);// 设置是否可以通过点击Back键取消                dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条                dialog.setIcon(R.mipmap.ic_launcher);// 设置提示的title的图标,默认是没有的                dialog.setTitle("提示");                dialog.setMax(100);                dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "保持",                        new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                // TODO Auto-generated method stub                            }                        });                dialog.setMessage("这是一个水平进度条");                dialog.show();                new Thread(new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                        int i = 0;                        while (i < 100) {                            try {                                Thread.sleep(200);                                // 更新进度条的进度,可以在子线程中更新进度条进度                                dialog.incrementProgressBy(1);                                // dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式                                i++;                            } catch (Exception e) {                                // TODO: handle exception                            }                        }                        // 在进度条走完时删除Dialog                        dialog.dismiss();                    }                }).start();

i效果如图
Android中ProgressDialog的简单使用._第1张图片

关于Unable to add window – token null is not for an application 的错误
最近在写到ProgressDialog的时候 报错:
android.view.WindowManager$BadTokenException: Unable to add window – token null is not for an application。

ProgressDialog progressDialog=new ProgressDialog(context);
此处的context 要保证你的上下文要为activity对象,只有activity才能添加ProgressDialog窗体,
为了确保正确,context可以使用activity.this表示,不要一味地写成getApplicationContext()

更多相关文章

  1. 《Android面试宝典》学习笔记(第四章:对话框、信息提示和菜单)
  2. Android提示版本更新的实现
  3. eclipse的android智能提示设置
  4. 【Android】播放提示音
  5. android使用自定义标题时提示“you cannot combine custom title
  6. Android lint 检查提示汇总
  7. Android 创建圆形背景图片
  8. Android Studio 提示错误:No IDEA annotations attached to the J
  9. Android Studio 小提示,新建Activity

随机推荐

  1. 2-3-9 RatingBar
  2. cocosCreator打包Android及更换icon
  3. 【Android】自定义Gradle Plugin实现云端
  4. Android上实现一个简单的天气预报APP(二)
  5. Memory & Threading. (Android(安卓)Perf
  6. 在Android中集成FFmpeg
  7. Android中OkHttp的使用(详解)
  8. 开源项目之Android(安卓)Secrets(密码箱)
  9. Android、H5 单独调起拍照与摄像
  10. android studio中导入第三方库