ProgressDialog的使用
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需要继承Dialog类,创建自定义布局,加载UI元素,并根据需求实现特定功能,如加载动画、定时停止和外部中断。通过这种方式,我们可以打造一个既美观又符合项目需求的...
总结来说,自定义Android的ProgressDialog涉及以下几个关键步骤: 1. 继承`DialogFragment`创建自定义对话框类。 2. 在`onCreateDialog`方法中使用自定义布局创建对话框。 3. 定义自定义布局,包含所需UI元素。 4. ...
这篇文章将对Android ProgressDialog的使用进行详细总结。 首先,我们来看ProgressDialog的创建方式: 1. **方式一**:直接通过构造函数创建一个ProgressDialog对象,然后调用`show()`方法显示。例如: ```java ...
总结来说,`ProgressDialog`是Android开发中用于显示操作进度的重要组件,它帮助提升用户体验,确保用户知道应用正在后台执行任务。理解和熟练使用`ProgressDialog`对于任何Android开发者来说都是必要的技能。在实际...
总结一下,自定义ProgressDialog的关键步骤包括: 1. 创建一个继承自`DialogFragment`的类。 2. 重写`onCreateDialog()`方法,使用`AlertDialog.Builder`构建自定义对话框。 3. 设计自定义布局文件,包含所需的控件...
总结来说,自定义`ProgressDialog`是提升Android应用用户体验的一个有效手段。通过调整主题、布局、动画和交互逻辑,我们可以创建各种独特且吸引人的进度对话框,以满足不同场景的需求。在实际开发中,务必注意保持...
总结来说,自定义Android ProgressDialog主要包括以下步骤: 1. 创建一个继承自`DialogFragment`的新类。 2. 在新类中重写`onCreateDialog()`,并使用自定义布局。 3. 设计自定义布局,包括进度条样式、文字提示等。...
总结起来,控制ProgressDialog的可见性主要涉及主线程、Looper和Handler的协同工作。理解这些概念有助于编写出更健壮的异步处理代码,同时保证用户体验的流畅性。通过深入研究源码和实践,开发者可以更好地掌握...
总结来说,ProgressDialog是Android开发中的一个重要工具,它可以帮助提供更好的用户体验,让用户知道应用程序正在忙碌并等待完成。在设计和实现时,应考虑到用户界面的响应性,确保在任务完成后及时关闭...
总结起来,自定义ProgressDialog是提升Android应用用户体验的重要手段。通过创建独特的布局和定制的逻辑,开发者可以打造出符合应用风格且功能强大的加载指示器。在实际开发中,要确保自定义的ProgressDialog不仅...
总结一下,使用ProgressDialog或其替代方案如AlertDialog,开发者可以在Android应用中优雅地处理网络访问和其他耗时操作,向用户展示加载动画提示,保持良好的用户体验。在进行网络请求时,使用异步任务能够保证主线...
总结,Android ProgressDialog是为用户提供反馈的重要工具,开发者需要根据需求选择适当的样式,并正确地管理其显示和消失。随着Android版本的更新,适时采用更现代的组件如ProgressBar和Notification来提升用户体验...
总结一下,通过自定义AsynTask,我们可以将耗时的图片下载操作放在子线程进行,同时在主线程中更新ProgressDialog的进度,确保UI的流畅性。在下载完成后,通过onPostExecute()方法将图片显示在ImageView上。这个过程...
总结一下,Android的ProgressDialog是一个在后台任务执行时向用户展示进度的组件。虽然在新版本的Android中被弃用,但它仍然是学习Android UI和异步处理的重要知识点。理解ProgressDialog的工作原理和替代方案,可以...
总结,`ProgressDialog Demo`是一个很好的学习资源,它帮助开发者理解如何在Android应用中优雅地展示进度,同时提供给用户良好的交互体验。通过实践这个Demo,你可以掌握`ProgressDialog`的使用方法,包括创建、设置...
总结起来,Android中的文件复制可以通过Java的I/O流实现,而`ProgressDialog`可以用来向用户展示复制过程的进度。确保在正确线程中执行这些操作,并适当地更新进度条,以提供良好的用户体验。在实际项目中,你可能还...
总结一下,ProgressDialog是Android应用中用于显示加载进度的重要组件,它有多种样式可供选择,并可以通过源码分析深入理解其实现机制。随着Android版本的更新,开发者应适时采用新的API和设计模式来替换旧有的...
总结起来,通过结合使用旋转动画和帧动画,开发者可以创建出各种独特的ProgressDialog效果,提高应用的交互性和用户体验。同时,自定义ProgressDialog还允许在加载过程中添加额外的信息,如提示文本,以更好地向用户...