ProgressDialog的使用 

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

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

    // 方式一:new Dialogfinal 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() {@Overridepublic void onCancel(DialogInterface dialog) {// TODO Auto-generated method stubToast.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() {@Overridepublic void onDismiss(DialogInterface dialog) {// TODO Auto-generated method stub}});// 监听Key事件被传递给dialogdialog.setOnKeyListener(new DialogInterface.OnKeyListener() {@Overridepublic boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {// TODO Auto-generated method stubreturn false;}});// 监听cancel事件dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {@Overridepublic void onCancel(DialogInterface dialog) {// TODO Auto-generated method stub}});//设置可点击的button,最多有三个(默认情况下)dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setMessage("这是一个圆形进度条");dialog.show();new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Thread.sleep(5000);// cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的差别是// 调用cancel方法会回调DialogInterface.OnCancelListener假设注冊的话,dismiss方法不会回掉dialog.cancel();// dialog.dismiss();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});dialog.setMessage("这是一个水平进度条");dialog.show();new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubint i = 0;while (i < 100) {try {Thread.sleep(200);// 更新进度条的进度,能够在子线程中更新进度条进度dialog.incrementProgressBy(1);// dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式i++;} catch (Exception e) {// TODO: handle exception}}// 在进度条走完时删除Dialogdialog.dismiss();}}).start();

很多其它的是使用自己定义的ProgressDialog,以满足不同显示的须要。

转载于:https://www.cnblogs.com/bhlsheji/p/4231800.html

ProgressDialog使用总结相关推荐

  1. ProgressDialog的使用-------------范例(学习笔记)

    -------------------------------XML------------------------ <?xml version="1.0" encoding ...

  2. Android学习笔记之ProgressDialog

    mian.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  3. Android 自定义ProgressDialog

    Android本身已经提供了ProgressDialog进度等待框,使用该Dialog,我们可以为用户提供更好的体验:在网络请求时,弹出此框等待网络数据. 不过,既然是为了提高用户体验,我们肯定希望该 ...

  4. ProgressDialog用法详解

     ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出 ...

  5. Android之创建简单的ProgressDialog

    效果图: 参看以下代码: public class ProgressActivity extends Activity implements OnClickListener {// 最大进度priva ...

  6. Dialog的使用(三):progressDialog

    ProgressDialog显示进度,但是这个显示进度是用Handler的handleMessage中来处理的 package com.example.androidtest;import andro ...

  7. Android 之 ProgressDialog用法介绍(矩形进度条 和 圆形 进度条)

    2019独角兽企业重金招聘Python工程师标准>>> 布局文件: <LinearLayout xmlns:android="http://schemas.andro ...

  8. progressdialog的setProgress没反应

    progressdialog的setProgress没反应 问题:ProgressDialog中设置setProgress没有反应 解决:progressDialog.setIndeterminate ...

  9. 信息提醒之对话框(AlertDialog + ProgressDialog)-更新中

    概念 Android中的对话框需要使用AlertDialog类来显示,主要用于显示提醒信息,不过这个对话框类可不仅仅能用来显示一些信息,我们可以在对话框中防止任何的控件,使其成为一个复杂且功能强大的用 ...

最新文章

  1. OpenAI教GPT-3学会上网,「全知全能」的AI模型上线了
  2. 报错笔记:linux 命令行中的print输出内容无法重定向到文件中
  3. Vue 2.3、2.4 知识点小结
  4. myeclipse深色模式_完善深色模式的调色板
  5. 如何写一个包含多个事件四则运算的留存SQL ——impala hive
  6. linux的常用操作——查看和修改文件权限
  7. 云计算交流会计算机操作,计算机二级考试真题-word-小王-云计算技术交流大会...
  8. 再聊Spring Bean的生命周期
  9. 【Demo 0003】Java基础-数组
  10. js基础知识汇总04
  11. 使用Visual Studio 2010打造C语言编译器
  12. 清华大学计算机系本科课程,清华大学计算机系本科生全部课程详细介绍
  13. Python pickle 反序列化详解
  14. 基于jquery读取csv
  15. 有线等效隐私 (WEP)
  16. 计算机管理员账户默认密码,win10默认管理员密码,win10管理员初始密码
  17. C#视频处理,调用强大的ffmpeg
  18. Markdown的书写方法
  19. 《中学科技》期刊简介及投稿邮箱
  20. 传感器及ADAS技术相关

热门文章

  1. mysql myisam存储引擎_MySQL浅谈MyISAM存储引擎
  2. conv2d 公式_TF-卷积函数 tf.nn.conv2d 介绍
  3. Fiddler之弱网测试(Web)
  4. ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具
  5. vue 不识别svg_vue中引用svg,vue引入svg不显示,vue引用svg配置,vue3.0+ts如何配置svg...
  6. linux 跟踪链接 超时,Linux:跟踪netstat -s“连接尝试失败”的来源
  7. zip 密码算法 java,java zip 密码
  8. python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题
  9. python输出方格_Python蓝桥杯练习 剪格子
  10. neo4j 机器学习_neo4j(图数据库)是什么?