ProgressDialog讲解
来源:互联网 发布:平舆在线软件下载 编辑:程序博客网 时间:2024/06/08 16:44
一、ProgressDialog的创建方式
ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。
ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show()。
二、ProgressDialog样式
1. 圆形进度条
代码如下:
ProgressDialog dialog = new ProgressDialog(this); dialog.setTitle("提示:"); // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的 dialog.setIcon(R.drawable.ic_launcher); dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条 // dismiss监听 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { Log.e("TAG", "对话框解除了"); } }); // 监听Key事件被传递给dialog dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { return false; }});// 监听cancel事件dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { } });// 设置可点击的按钮,最多有三个(默认情况下) dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是 // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss // 方法不会回调 dialog.cancel(); // dialog.dismiss(); } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "查看详情", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.setMessage("这是一个圆形进度条,确定关闭吗?"); dialog.show();
效果图如下:
2. 水平进度条
代码如下:
final ProgressDialog dialog = new ProgressDialog(this); dialog.setTitle("提示:"); // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的 dialog.setIcon(R.drawable.ic_launcher); dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条的形式为水平进度条 dialog.setMax(100); // dismiss监听 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { Log.e("TAG", "对话框解除了"); } }); // 监听Key事件被传递给dialog dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { return false; } }); // 监听cancel事件 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { } }); // 设置可点击的按钮,最多有三个(默认情况下) dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是 // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss // 方法不会回调 dialog.cancel(); // dialog.dismiss(); } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "查看详情", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); 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();
效果图如下:
最后,关于自定义ProgressDialog的使用,可参考以下博客:
http://blog.csdn.net/allen315410/article/details/41699063
http://blog.csdn.net/luhuajcdd/article/details/8986212
http://blog.csdn.net/vrix/article/details/43486973
0 0
- ProgressDialog讲解
- ProgressDialog
- ProgressDialog
- ProgressDialog
- progressDialog
- ProgressDialog
- ProgressDialog
- progressDialog
- ProgressDialog
- ProgressDialog
- ProgressDialog
- ProgressDialog
- ProgressDialog
- 【progressDialog】自定义progressDialog
- ProgressDialog使用
- ProgressDialog使用
- ProgressDialog使用
- ProgressDialog使用
- Web前端面试指导(八):iframe有那些缺点
- widows Sftp 基础命令运用
- [李景山php]每天laravel-20161130|BelongsToMany.php-2
- Ubuntu下为Apache2配置SSL
- JavaScript 贪吃蛇游戏的实现
- ProgressDialog讲解
- 如何为Suse操作系统重设root密码
- 配置tomcat到系统服务方法及一般问题解决办法
- 软件工程:传统软件工程 vs 敏捷软件开发
- 9.22上机操作代码
- windows下 composer常见问题及处理
- 第四周 用星号输出姓名读音首字母
- 开发课程学习资料
- struts.xml的result类型