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. GB2312转unicode程序(转)

     GB2312转unicode程序   #ifndef UNICODE_H #define UNICODE_H #include <string.h> #ifdef __DEFLINUX_ ...

  2. 16级第一周寒假作业F题

    Subsequence TimeLimit:1000MS  MemoryLimit:65536K 64-bit integer IO format:%lld Problem Description A ...

  3. .net core 13

  4. fragment 数据传递,传值,通信

    [原][Fragment精深系列4]Fragment与Activity之间的数据交互 2015-5-26阅读389 评论0   以下内容来自于自己的实践和网络资料的整理,希望对你有帮助. 一.Acti ...

  5. mysql连接不上Uncaught exception 'PDOException' with message 'could not find driver

    需要给你的PHP加一个PDO扩展打开PHP.INI 把extension=php_pdo.dll 前面的分号去掉 重启APACHE. extension=php_pdo_mysql.dll

  6. 基于Annotation与SpringAOP的缓存简单解决方案

    前言: 由于项目的原因,需要对项目中大量访问多修改少的数据进行缓存并管理,为达到开发过程中通过Annotation简单的配置既可以完成对缓存的设置与更新的需求,故而设计的该简易的解决方案. 涉及技术: ...

  7. 浏览器UA汇总

    UA  -- uesr-agent -- 用户代理,是服务器判断请求的种类,比如:使用PC和手机访问一个网站,呈现的画面是不一样的. 原理就是设备的用户代理不同 1 主要浏览器 safari 5.1 ...

  8. JAVA基础--接口 interface

    接口是抽象方法和常量值定义的集合, 接口是一种特殊的抽象类, 只包含常量和方法的定义, 而没有变量和方法的实现. 接口->接口: extends, 类->类: extends, 类-> ...

  9. JAVA基础-抽象类

    1. 用abstract关键字来修饰一个类时, 这个类叫做抽象类, 用abstract修饰一个方法时, 该方法叫做抽象方法 2. 含有抽象方法的类必须被声明为抽象类, 3. 抽象类必须被继承, 抽象方 ...

  10. JQuery的插件开发——重点

    1.给JQuery全局对象扩展一个函数方法 $.log=function(){ /* 给全局对象$扩展一个函数*/ } $.log;//调用方法 2.给JQuery普通对象扩展一个函数方法 3.使用第 ...