关于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效果如图

关于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. 打开SDK Manager检查Android(安卓)SDK下载和更新失败的解决方法
  4. android 圆角按钮和按钮颜色
  5. Android取消EditText自动获取焦点默认行为
  6. Android(安卓)TextView 设置中划线 下划线
  7. Android动画效果
  8. Android(安卓)高级UI组件
  9. Android(安卓)Spinner自动弹出列表,设置title

随机推荐

  1. Android的startActivityForResult()与onA
  2. Android中Image的简单实例详解
  3. Android开发实践:自定义带消息循环(Looper)
  4. Android进程间通信IPC机制Binder
  5. android 开发提速
  6. Android滑动组件----RecyclerView
  7. Android Studio 3.6 正式版终于发布了
  8. okhttp3.x的post请求
  9. 《Qt on Android核心编程》目录
  10. 【android】环境搭建(For Windows)