Android ProgressDialog使用总结

所属分类: 软件编程 / Android 阅读数: 251
收藏 0 赞 0 分享

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

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

// 方式一:new Dialog 
final ProgressDialog dialog = new ProgressDialog(this); 
dialog.show(); 
// 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容 
ProgressDialog dialog2 = ProgressDialog.show(this, "提示", "正在登陆中"); 
// 方式三 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态 
ProgressDialog dialog3 = ProgressDialog 
.show(this, "提示", "正在登陆中", false); 
// 方式四 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的 
ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中", 
false, true); 
// 方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 DialogInterface.OnCancelListener 
// cancelListener用于监听进度条被取消 
ProgressDialog dialog5 = ProgressDialog.show(this, "提示", "正在登陆中", true, 
true, cancelListener); 

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

private OnCancelListener cancelListener = new OnCancelListener() { 
@Override 
public void onCancel(DialogInterface dialog) { 
// TODO Auto-generated method stub 
Toast.makeText(MainActivity.this, "进度条被取消", Toast.LENGTH_LONG) 
.show(); 
} 
}; 

ProgressDialog的样式有两种,一种是圆形不明确状态,一种是水平进度条状态

第一种方式:圆形进度条

final ProgressDialog dialog = new ProgressDialog(this); 
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条 
dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 
dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 
dialog.setIcon(R.drawable.ic_launcher);// 
// 设置提示的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(); 
new Thread(new Runnable() { 
@Override 
public void run() { 
// TODO Auto-generated method stub 
try { 
Thread.sleep(5000); 
// cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是 
// 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉 
dialog.cancel(); 
// dialog.dismiss(); 
} catch (InterruptedException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 
}).start(); 

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

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

第二种方式:水平进度条

// 进度条还有二级进度条的那种形式,这里就不演示了 
final ProgressDialog dialog = new ProgressDialog(this); 
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条 
dialog.setCancelable(true);// 设置是否可以通过点击Back键取消 
dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 
dialog.setIcon(R.drawable.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(); 

关于Android ProgressDialog使用总结的相关知识就给大家介绍到这里,后续还会持续更新,请持续关注脚本之家网站,谢谢!

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多