在很多PC软件或手机软件中,我们都会看见 “加载中...” 类似的对话框,当然,在android应用程序中也是如此。如果我们想在android应用程序中使用这样的效果,那么就需要用到ProgressDialog。首先,我们来看一下ProgressDialog这个类。

ProgressDialog类继承自AlertDialog类,同样存放在android.app包中。ProgressDialog有两种形式,一种是圆圈旋转形式,一种是水平进度条形式,选择哪种形式可以通过以下两个属性值来设定:

static int STYLE_HORIZONTAL
          Creates a ProgressDialog with a horizontal progress bar.
static int STYLE_SPINNER
          Creates a ProgressDialog with a ciruclar, spinning progress bar.

注意,当设置为水平进度条形式时,进度的取值范围为0—10000。

ProgressDialog的构造方法有以下两种:

ProgressDialog(Context context)
           
ProgressDialog(Context context, int theme)
           

除了构造方法外,ProgressDialog还提供的如下的静态方法返回ProgressDialog对象:

static ProgressDialog show(Context context, CharSequence title, CharSequence message)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener)

需要留意的是第一个参数必须是目前运行的Activity的Context。

android的ProgressDialog必须要在后台程序运行完毕前,以dismiss()方法来关闭取得焦点的对话框,否则程序就会陷入无法终止的无穷循环中。在线程中,不得有任何更改Context或parent View的任何状态,文字输出等时间,因为线程里的Context与View并不属于parent,两者之间也没有关联。

我们以下面一个简单的程序来学习ProgressDialog的应用:

public class MainActivity extends Activity
{private Button button=null;public ProgressDialog dialog=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);this.button=(Button)super.findViewById(R.id.button);this.button.setOnClickListener(new OnClickListener() {           @Overridepublic void onClick(View v) {final CharSequence strDialogTitle=MainActivity.this.getString(R.string.str_dialog_title);final CharSequence strDialogBody=MainActivity.this.getString(R.string.str_dialog_body);//显示Progress对话框dialog=ProgressDialog.show(MainActivity.this,strDialogTitle,strDialogBody,true);new Thread(){@Overridepublic void run(){try{//表示后台运行的代码段,以暂停3秒代替sleep(3000);}catch (InterruptedException e) {e.printStackTrace();}finally{//卸载dialog对象dialog.dismiss();}}}.start();}});}}

该程序布局管理器仅需一个Button组件(id为button)即可,此处不再给出。

注意,为了代码更加符合规范,本程序在strings.xml中定义了如下字符串资源:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">demo2</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string><string name="execute">执行</string><string name="str_dialog_title">请稍等片刻</string><string name="str_dialog_body">正在执行...</string></resources>

程序运行效果截图:

转载于:https://www.cnblogs.com/dyllove98/archive/2013/06/09/3130042.html

android学习笔记之ProgressDialog的使用相关推荐

  1. Android学习笔记之ProgressDialog

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

  2. Android学习笔记(Android Studio)3-3(ProgressBar ProgressDialog)(加载进度条、转圈圈)UI组件之弹出组件

    Android学习笔记3-3 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 3-3 ProgressBar & Progr ...

  3. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  4. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  5. Android学习笔记26:图片切换控件ImageSwitcher的使用

    在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...

  6. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  7. Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...

  8. Android学习笔记:TabHost 和 FragmentTabHost

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...

  9. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

最新文章

  1. Linux并发与同步专题 (1)原子操作和内存屏障
  2. Vue.js-Day07【项目实战(附带 完整项目源码)-day02:学习能力、字体图标(使用步骤)、在vue.js中使用jQuery】
  3. 大牛书单 | 数据库专题好书分享
  4. codeforces gym-101745 C-Infinite Graph Game 分块
  5. HDU 6188 Duizi and Shunzi
  6. kali的软件包安装源配置
  7. Linux网络编程之connect创建
  8. java网络通信技术示例:简单的聊天小程序
  9. SMOTE算法(人工合成数据)
  10. PolSARpro v6.0之Sentinel-1A Wishart与SVM监督分类
  11. airpods版本号_怎么看airpods版本号 苹果airpods查看固件版本教程
  12. mysql获取记录的插入时间_mysql 自动记录数据插入及最后修改时间
  13. ORAN传输封装类型
  14. PostgreSQL 连接(JOIN)
  15. python 将目录下的文件和子目录复制到指定文件夹
  16. 精华QT安装:qt-opensource-windows-x86-5.14.1
  17. CAD中如何把一个DWG文件里的块插入到另一个DWG中
  18. Java练习之复数运算
  19. 系统分析与设计——系统顺序图
  20. 计算机网络基础概念与重要定义汇总

热门文章

  1. Git和Github的学习
  2. BDD框架之Cucumber研究
  3. PHP输入流 php://input 相关【转】
  4. [LeetCode] 547. Friend Circles Java
  5. Entity Framework 数据库先行、模型先行、代码先行
  6. 一款纯css3实现的超炫动画背画特效
  7. 【ThinkPHP】实例化模型的方法
  8. 基于Response的将数据导出到Excel
  9. .net 使用阿里云RocketMQ
  10. mysql 批量添加字段前缀_MySQL中批量前缀表的sql语句