`
丨杨丨杨丨
  • 浏览: 456 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ProgressDialog总结

阅读更多

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 自定义样式

    总结来说,自定义Android的ProgressDialog需要继承Dialog类,创建自定义布局,加载UI元素,并根据需求实现特定功能,如加载动画、定时停止和外部中断。通过这种方式,我们可以打造一个既美观又符合项目需求的...

    android 自定义ProgressDialog对话框

    总结来说,自定义Android的ProgressDialog涉及以下几个关键步骤: 1. 继承`DialogFragment`创建自定义对话框类。 2. 在`onCreateDialog`方法中使用自定义布局创建对话框。 3. 定义自定义布局,包含所需UI元素。 4. ...

    Android ProgressDialog使用总结

    这篇文章将对Android ProgressDialog的使用进行详细总结。 首先,我们来看ProgressDialog的创建方式: 1. **方式一**:直接通过构造函数创建一个ProgressDialog对象,然后调用`show()`方法显示。例如: ```java ...

    progressDialog进度对话框的创建

    总结来说,`ProgressDialog`是Android开发中用于显示操作进度的重要组件,它帮助提升用户体验,确保用户知道应用正在后台执行任务。理解和熟练使用`ProgressDialog`对于任何Android开发者来说都是必要的技能。在实际...

    自定义ProgressDialog

    总结一下,自定义ProgressDialog的关键步骤包括: 1. 创建一个继承自`DialogFragment`的类。 2. 重写`onCreateDialog()`方法,使用`AlertDialog.Builder`构建自定义对话框。 3. 设计自定义布局文件,包含所需的控件...

    自定义的ProgressDialog

    总结来说,自定义`ProgressDialog`是提升Android应用用户体验的一个有效手段。通过调整主题、布局、动画和交互逻辑,我们可以创建各种独特且吸引人的进度对话框,以满足不同场景的需求。在实际开发中,务必注意保持...

    Android自定义progressDialog

    总结来说,自定义Android ProgressDialog主要包括以下步骤: 1. 创建一个继承自`DialogFragment`的新类。 2. 在新类中重写`onCreateDialog()`,并使用自定义布局。 3. 设计自定义布局,包括进度条样式、文字提示等。...

    主线程控制ProgressDialog的可见性

    总结起来,控制ProgressDialog的可见性主要涉及主线程、Looper和Handler的协同工作。理解这些概念有助于编写出更健壮的异步处理代码,同时保证用户体验的流畅性。通过深入研究源码和实践,开发者可以更好地掌握...

    ProgressDialog范例

    总结来说,ProgressDialog是Android开发中的一个重要工具,它可以帮助提供更好的用户体验,让用户知道应用程序正在忙碌并等待完成。在设计和实现时,应考虑到用户界面的响应性,确保在任务完成后及时关闭...

    Android 自定义ProgressDialog

    总结起来,自定义ProgressDialog是提升Android应用用户体验的重要手段。通过创建独特的布局和定制的逻辑,开发者可以打造出符合应用风格且功能强大的加载指示器。在实际开发中,要确保自定义的ProgressDialog不仅...

    android ProgressDialog加载中动画提示

    总结一下,使用ProgressDialog或其替代方案如AlertDialog,开发者可以在Android应用中优雅地处理网络访问和其他耗时操作,向用户展示加载动画提示,保持良好的用户体验。在进行网络请求时,使用异步任务能够保证主线...

    Android ProgressDialog Demo

    总结,Android ProgressDialog是为用户提供反馈的重要工具,开发者需要根据需求选择适当的样式,并正确地管理其显示和消失。随着Android版本的更新,适时采用更现代的组件如ProgressBar和Notification来提升用户体验...

    AsynTask+ProgressDialog子线程下载图片并显示进度然后显示

    总结一下,通过自定义AsynTask,我们可以将耗时的图片下载操作放在子线程进行,同时在主线程中更新ProgressDialog的进度,确保UI的流畅性。在下载完成后,通过onPostExecute()方法将图片显示在ImageView上。这个过程...

    Android 对话框中的进度条 ProgressDialog

    总结一下,Android的ProgressDialog是一个在后台任务执行时向用户展示进度的组件。虽然在新版本的Android中被弃用,但它仍然是学习Android UI和异步处理的重要知识点。理解ProgressDialog的工作原理和替代方案,可以...

    ProgressDialog Demo

    总结,`ProgressDialog Demo`是一个很好的学习资源,它帮助开发者理解如何在Android应用中优雅地展示进度,同时提供给用户良好的交互体验。通过实践这个Demo,你可以掌握`ProgressDialog`的使用方法,包括创建、设置...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    总结起来,Android中的文件复制可以通过Java的I/O流实现,而`ProgressDialog`可以用来向用户展示复制过程的进度。确保在正确线程中执行这些操作,并适当地更新进度条,以提供良好的用户体验。在实际项目中,你可能还...

    android 对话框中的进度条 (ProgressDialog)

    总结一下,ProgressDialog是Android应用中用于显示加载进度的重要组件,它有多种样式可供选择,并可以通过源码分析深入理解其实现机制。随着Android版本的更新,开发者应适时采用新的API和设计模式来替换旧有的...

    旋转和帧动画实现自定义的ProgressDialog

    总结起来,通过结合使用旋转动画和帧动画,开发者可以创建出各种独特的ProgressDialog效果,提高应用的交互性和用户体验。同时,自定义ProgressDialog还允许在加载过程中添加额外的信息,如提示文本,以更好地向用户...

Global site tag (gtag.js) - Google Analytics