ProgressDialog代表了进度对话框,程序只要创建ProgressDialog实例,并将它显示出来就是一个进度对画框。使用ProgressDialog创建进度对话框有如下两种方式。

①如果只是创建简单的对话框,调用ProgressDialog提供的静态show()方法显示对话框即可。

②创建ProgressDialog,然后调用方法对对话框里的进度条进行设置,设置完成后将对话框显示出来即可。

为了对进度对话框里的进度进行设置,ProgressDialog包含了如下常用的方法。

  • setIndeterminate(boolean indeterminate):设置对话框里的进度条不显示进度值。
  • setMax(int max):设置对话框里的进度条的最大值。
  • setMessage(CharSequence message):设置对话框里显示的消息。
  • setProgress(int value):设置对话框里进度条的进度值。
  • setProgressStyle(int style):设置对话框里进度条的风格。

下面程序的界面也很简单,界面上只有三个简单的按钮,当用户单击不同按钮时系统将会启动不同的进度对话框。其中第三个按钮激发的进度对话框比较复杂,该对话框使用填充数组来模拟耗时任务,随着任务的进行不断更新进度对话框上进度的显示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="环形进度条"
android:onClick="showSpinner"
/>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showIndeterminate"
android:text="不显示的进度条"/>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showpProgress"
android:text="显示进度的进度条"/>
</LinearLayout>

后台Activity代码文件如下:

package org.crazyit.helloworld;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;
import android.view.View; public class ProgressDialogTest extends Activity { final static int MAX_PROGRESS=100;
//改程序模拟填充长度为100的数组
private int[] data=new int[100];
//记录进度对话框的完成百分比
int progressStatus=0;
int hasData=0;
ProgressDialog pd1,pd2;
//定义一个负责更新的进度的Handler
Handler handler=new Handler()
{
public void handleMessage(Message msg)
{
//表明消息是由该程序发送的
if(msg.what==0x123)
{
pd2.setProgress(progressStatus);
}
} };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progress_dialog_test);
} public void showSpinner(View source)
{
ProgressDialog.show(this, "任务执行中", "任务执行中,请等待",false,true); //①
} public void showIndeterminate(View source)
{
pd1=new ProgressDialog(ProgressDialogTest.this);
//设置对话框的标题
pd1.setTitle("任务正在执行中");
//设置对话框显示的内容
pd1.setMessage("任务正在执行中,敬请等待...");
//设置对话框能用“取消”按钮关闭
pd1.setCancelable(true);
//设置对话框的进度条风格
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置对话框的进度条是否显示进度
pd1.setIndeterminate(true);
pd1.show(); //②
} public void showpProgress(View source)
{
//将进度条的完成进度设为0
progressStatus=0;
//重新开始填充数组
hasData=0;
pd2=new ProgressDialog(ProgressDialogTest.this);
pd2.setMax(MAX_PROGRESS);
//设置对画框的标题
pd2.setTitle("任务完成百分比");
//设置对话框显示的内容
pd2.setMessage("耗时任务的完成百分比");
//设置不能用“取消”按钮关闭
pd2.setCancelable(false);
//设置对话框的进度条风格
pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置对话框的进度条是否显示进度
pd2.setIndeterminate(false);
pd2.show(); //③
new Thread(){
public void run()
{
while(progressStatus<MAX_PROGRESS)
{
//获取耗时操作的完成百分比
progressStatus=MAX_PROGRESS*doWork()/data.length;
//发送空消息到Handler
handler.sendEmptyMessage(0x123);
}
//如果任务已完成
if(progressStatus>=MAX_PROGRESS)
{
//关闭对话框
pd2.dismiss();
} }
}.start();
} //模拟一个耗时的操作
public int doWork()
{
//为数组元素赋值
data[hasData++]=(int)(Math.random()*100);
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
return hasData; } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.progress_dialog_test, menu);
return true;
} }

上面程序为三个按钮定义了事件处理方法,其中一个按钮的事件处理方法调用了ProgressDialog的静态show()方法创建并显示对话框,如上面①号粗体字代码所示,这也是使用对话框的最简单的方式;第二个按钮的事件处理方法先创建了ProgressDialog对象,再调用该对话框的show()方法将它显示出来,如上面的②号粗体字代码所示;第三个按钮的事件处理方法也先创建ProgressDialog对象,并设置对话框的相关属性,再调用show()方法将它显示出来。
  运行上面的程序出现如下所示界面效果:

使用ProgressDialog创建进度对话框的更多相关文章

  1. Android开发系列(二十七):使用ProgressDialog创建进度对话框

    进度对话框在寻常的应用中非经常见,比方下载的时候,打开页面的时候.转移文件等等.有环形的.有长条形的. 基本就这两种 创建进度对话框的两种方式: 1.创建ProgressDialog实例,然后调用Pr ...

  2. 2.5.6 使用progressDialog创建进度对话框

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  3. Android——进度对话框

    java类代码: //普通进度对话框 public void bt8_onClick(View v) { final ProgressDialog progressDialog = new Progr ...

  4. 进度对话框QProgressDialog

    继承于  QDialog import sys,time from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QProgress ...

  5. 10.Android之ProgressDialog进度对话框学习

    APP应用中经常会下载某些东西,这里面有涉及到进度对话框,今天来学习下. 首先,布局里放进两个按钮,点击一个显示条形进度条,另一个显示圆形进度条.代码如下: <?xml version=&quo ...

  6. 进度对话框 ProgressDialog 用法总结

    ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog );         dialog.setButton(DialogInterface.BUTTO ...

  7. Android学习笔记(九)——更复杂的进度对话框

    显示操作进度的对话框 1.使用上一篇创建的同一项目.在activity_main.xml文件里加入一个Button: <Button android:id="@+id/btn_dial ...

  8. Android学习笔记(八)——显示运行进度对话框

    显示运行进度对话框 我们经常有这种经历:运行某一应用程序时.须要等待一会,这时会显示一个进度(Please Wait)对话框,让用户知道操作正在进行. 我们继续在上一篇中的程序中加入代码~ 1.在上一 ...

  9. Progress.js – 为页面上的任意对象创建进度条效果

    Progress.js 是一个 JavaScript 和 CSS3 的库,它帮助开发人员为网页上的每个对象创建和管理进度条效果.你可以设计自己的模板,进度条或者干脆定制. 您可以使用 Progress ...

随机推荐

  1. CALayer --> UIView

    一.CALayer和UIView的关系 UIView显示在屏幕上归功于CALayer 可以说:UIView依赖CALayer,又高于CALayer 通过调用drawRect方法来渲染自身的内容,调节C ...

  2. HDU 4393 Throw nails(优先队列)

    优先队列的应用 好坑,好坑,好坑,重要的事情说三遍! #include<iostream> #include<cstdio> #include<cstring> # ...

  3. 跨域访问解决方案:JSONP

    关于什么是跨域请求,可以参见我之前的博文:http://www.cnblogs.com/LiuChunfu/p/5240145.html 上述博文最后有提到解决方案,一直说补充,但是工作忙忘了,直到朋 ...

  4. document.createElement方法的使用

    我们在使用createElemen方法t创建一个元素节点的时候,似乎在IE下面怎么写都可以,但切换到FF等其它浏览器却总是会报错. 比如我们要创建一个input元素,那么在IE下,我们可以有多种写法: ...

  5. Android 各层中日志打印功能的应用

    1. HAL层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV()DEBUG LOGD()INFO LOGI()WARN LOGW() ...

  6. ARC下需要注意的内存管理

    ARC下需要注意的内存管理 2016/04/03 · iOS开发 · 内存管理 分享到:1 原文出处: 一不(@luoyibu)    之前发了一篇关于图片加载优化的文章,还是引起很多人关注的,不过也 ...

  7. AWK第一篇------全面介绍

    AWK-文本流编辑器 目录 [隐藏] 1 命令行语法 2 用shell实现调用awk 3 awk语言概要 3.1 记录和字段 3.2 脚本的格式 3.3 行为终止 3.4 注释 3.5 模式 3.6  ...

  8. precision、recall、accuracy的概念

    机器学习中涉及到几个关于错误的概念: precision:(精确度) precision = TP/(TP+FP) recall:(召回率) recall = TP/(TP+FN) accuracy: ...

  9. html的URL参数传值问题

    在URL中的参数传值时,例如:www.nihao.com?id=001 ,= 两边不能有空格,不然PHP在通过$_GET['id']获取时会出现传值为空.

  10. 《数据结构与算法分析:C语言描述》读书笔记------List的C语言实现

    List的简单实现.在GCC下测试通过. list.h #ifndef _List_H /*List数据结构的简单实现*/ struct Node; typedef struct Node Node; ...