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. 一些简单的例子让你在Java中能更好的学习并理解循环结构(1)!

    一.java中流程控制方式采用三种基本流程结构:顺序结构,选择(分支)结构,循环结构. 1.[if-else 结构] if(1>2){ system.out.println("if条件 ...

  2. iOS 旋屏问题

    今天突然想起来,以前的一个问题没有解决,就上网百度了一些方法,看到一篇文章,写的很详细,我就操作试试,结果还真的实现了功能,接下来我将重复他的结合我自己的测试,说一下iOS中的旋屏问题. 1.首先配置 ...

  3. kindeditor集成ckplayer(带右键编辑菜单)

    相信好多朋友为开源web编辑器没有集成视频播放器而烦恼,于是我就是试着修改了一下kindeditor,其实ueditor应该也是同样的,好了不多说了直接上图吧 kindeditor版本: 4.1.7  ...

  4. Js实例——模态框弹出层

    1.描述 百度登录就是一个模态框弹出层.思路分析:先将灰色大背景和登陆盒子设为不可见,利用JS将其动态加载可见. 2.代码 <!DOCTYPE html> <html> < ...

  5. iOS开发——NSArray中的字符串排序

     NSArray *arr = @[@"fjhsf",@"wert",@"fdg",@"asd",@"fs g ...

  6. LAMP优化

    LAMP系统优化是非常必要的,一个好的优化能使系统运作的越快,从而提高工作效率,下面我将从几方面给大家详细介绍下LAMP系统优化的内容. 一.硬件优化 1.升级硬件的一般规则:对于 PHP 脚本而言, ...

  7. (简单) LightOJ 1074 Extended Traffic,SPFA+负环。

    Description Dhaka city is getting crowded and noisy day by day. Certain roads always remain blocked ...

  8. jsoncpp第二篇------API

    更多API参考jsoncpp头文件 1  jsoncpp的api简要说明 1,解析(json字符串转为对象) std::string strDataJson; Json::Reader JReader ...

  9. KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)

    源:KEIL MDK 查看代码量.RAM使用情况--RO-data.RW-data.ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-da ...

  10. linux 驱动入门5

    慢慢的开始转驱动,目前比较有时间,一定要把驱动学会.哎.人生慢慢路,一回头.已经工作了八九年了.努力.在买套房.改退休了.学驱动.个人认为首先要熟悉驱动框架.慢慢来.心急吃不了热豆腐. 看网上都说的设 ...