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. Unity3d疑难问题解决

    1. 加载 c++ dll 不成功,报这个错: Failed to load 'Assets/Plugins/x86_64/myFile.dll' with error 'The operation ...

  2. 自动获取访客QQ

    http://jerring.cn/bizqq/index.html http://www.oicqzone.com/qqjiqiao/2015072322139.html

  3. 英语学习/词典app行业top5简要分析

    综述 根据豌豆夹上的下载量如下图所示,我们组确定的国内行业top5分别是:有道词典(黄明帅负责),金山词霸(黄珂锐负责),百度翻译(刘馨负责),百词斩(贾猛负责),英语流利说(亢建强负责)(时间有限, ...

  4. HDU 2489 Minimal Ratio Tree 最小生成树+DFS

    Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. 我收藏的Blog

    收集我开发过程中遇见的优秀Blog iOS圈 王巍-强烈推荐 唐巧-强烈推荐 YYKit作者-强烈推荐 Imrazor's Blog Ryan's Zone http://www.cnblogs.co ...

  6. JOptionPane的使用

    最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了一下. 1.1 showMessageDialog 显示一个带有OK 按钮的模 ...

  7. Windows Server 2012 安装sqlserver2008 小记

    1.拷贝大文件被阻止   解决方案:把大文件压缩成小文件... 据说关闭防火墙会好点,没试验过. 2.安装第一步,提示没有安装.net framework 3.5 sp1 ,使用服务器管理器,添加角色 ...

  8. STM32驱动TEA5767收音机模块

    Tea5767是飞利浦公司出的一款集成化的收音机芯片,大四的时候机缘巧合遇到了这个芯片,用了一下,写点资料 主要特性 TEA5767HN是一款低功耗立体声收音IC,广泛应用于手机MP3 .MP 4 播 ...

  9. Java层与Jni层的数组传递(转)

    源:Java层与Jni层的数组传递 Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的S ...

  10. STM32-USB那点事

    STM32 USB那点事1 USB那点事2 - Custom HID例子程序解疑 USB那点事3 -使用端口2作为custom HID的传输 USB那点事5之USB通信出错 USB那点事6传输要素 S ...