Android开发系列(二十七):使用ProgressDialog创建进度对话框
进度对话框在寻常的应用中非经常见,比方下载的时候,打开页面的时候、转移文件等等。有环形的、有长条形的。
基本就这两种
创建进度对话框的两种方式:
1、创建ProgressDialog实例,然后调用ProgressDialog提供的静态show()方法显示实例就可以
2、创建ProgressDialog实例,然后调用方法对进度条进行设置,然后显示出来。
长条形的进度条还分为两种。第一种是显示运行进度,另外一种是不显示运行进度。
在接下来的样例中。我们会看到三种:环形进度条、显示运行进度的长条形进度条、不显示运行进度的长条形进度条
首先,我们创建一个Android项目,然后编写main.xml文件:
<? xml version="1.0" encoding="utf-8"?>
<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:text="不显示运行进度的进度条"
android:onClick="showIndeterminate" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示运行进度的进度条"
android:onClick="showProgress" />
</LinearLayout>
这里定义了三个button。三个button相应了相应的onClick属性
接下来,是ProgressDialogTest.java:
package org.crazyit.ui; import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View; public class ProgressDialogTest extends Activity
{
final static int MAX_PROGRESS = 100;
// 该程序模拟填充长度为100的数组
private int[] data = new int[50];
// 记录进度对话框的完毕百分比
int progressStatus = 0;
int hasData = 0;
ProgressDialog pd1,pd2;
// 定义一个负责更新的进度的Handler
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// 表明消息是由该程序发送的。
if (msg.what == 0x123)
{
pd2.setProgress(progressStatus);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
} public void showSpinner(View source)
{
// 调用静态方法显示环形进度条
ProgressDialog.show(this, "任务运行中"
, "任务运行中。请等待", false, true); //①
} public void showIndeterminate(View source)
{
pd1 = new ProgressDialog(ProgressDialogTest.this);
// 设置对话框的标题
pd1.setTitle("任务正在运行中");
// 设置对话框显示的内容
pd1.setMessage("任务正在运行中,敬请等待...");
// 设置对话框能用“取消”button关闭
pd1.setCancelable(true);
// 设置对话框的进度条风格
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置对话框的进度条是否显示运行进度
pd1.setIndeterminate(true);
pd1.show(); //②
} public void showProgress(View source)
{
// 将进度条的完毕进度重设为0
progressStatus = 0;
// 又一次開始填充数组。 hasData = 0;
pd2 = new ProgressDialog(ProgressDialogTest.this);
pd2.setMax(MAX_PROGRESS);
// 设置对话框的标题
pd2.setTitle("任务完毕百分比");
// 设置对话框 显示的内容
pd2.setMessage("耗时任务的完毕百分比");
// 设置对话框不能用“取消”button关闭
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;
}
}
在进行第三个:显示运行进度的进度条的时候,我们用到了Thread线程,来模拟一个耗时的操作
这是效果图:
Android开发系列(二十七):使用ProgressDialog创建进度对话框的更多相关文章
- 使用ProgressDialog创建进度对话框
ProgressDialog代表了进度对话框,程序只要创建ProgressDialog实例,并将它显示出来就是一个进度对画框.使用ProgressDialog创建进度对话框有如下两种方式. ①如果只是 ...
- Android开发系列(十七):读取assets文件夹下的数据库文件
在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...
- Android开发(二十七)——android:layout_weight的真实含义
android:layout_weight的真实含义是:一旦View设置了该属性(假设有效的情况下),那么该 View的宽度等于原有宽度(android:layout_width)加上剩余空间的占比! ...
- BizTalk开发系列(二十七) 异常管理中的数据编码
在BizTalk的异常管理解决方案中.大部分是通过订阅相关的升级属性来接收消息,并在自定义的流程或发送端口进行处理.但不管怎样,一般会定义统一的 错误消息Schema,这样不仅可以让我们通过异常信息快 ...
- 2.5.6 使用progressDialog创建进度对话框
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】
<Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- ANDROID Porting系列二、配置一个新产品
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
- Android开发 QRCode二维码开发第三方框架
前言 Android开发里二维码开发经常用到,这里简单的介绍下Android开发里的二维码. 最广泛使用的二维码库zxing zxing是最广泛的二维码库各个平台都可以适用它,但是Android平台使 ...
- [Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动
经过昨天2dtoolkit系列教程一的推出,感觉对新手还有有一定的启发作用,引导学习使用unity 2dToolKit插件的使用过程,今天继续系列二——动画精灵的创建,以及背景图的无限循环滚动,在群里 ...
随机推荐
- 【转载】form表单的两种提交方式,submit和button的用法
1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...
- Python Socket详细介绍
Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字. socket类型 描述 socket. ...
- Fidder详解-工具简介(保存会话、decode解码、Repaly、自定义会话框、隐藏会话、会话排序)
前言 本文会对Fidder这款工具的一些重要功能,进行详细讲解,带大家进入Fidder的世界,本文会让你明白,Fidder不仅是一个抓包分析工具,也是一个请求发送工具,更加可以当作为Mock Serv ...
- 一个爬取lativ诚衣网站上模特穿搭图片的爬虫
show the code: [peter@localhost savvy]$ vi lativ.py # -*- coding:utf-8 -*- import requests,lxml,os f ...
- SQL中varchar和nvarchar的基本介绍及其区别
SQL中varchar和nvarchar的基本介绍及其区别 varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储 ...
- 什么是Etcd?
文章大部分引至:http://jolestar.com/etcd-architecture/ Etcd 按照官方介绍 Etcd is a distributed, consistent key-val ...
- NOIP2009T3最优贸易(Dfs + spfa)
洛谷传送门 看到这个题,原本想先从后往前dfs,求出能到终点的点,再在这些点里从前往后spfa,用一条边上的两个城市的商品价格的差来作边权,实施过后,发现图中既有负边权,又有回路,以及各种奇奇怪怪的东 ...
- bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规
骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...
- [NOIP1998] 提高组 洛谷P1012 拼数
题目描述 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4 ...
- Codeforces917C. Pollywog
$n \leq 1e8$个石头,$x \leq 8$个蝌蚪一开始在最左边$x$个石子,要跳到最右的$x$个,每次只能最左边的蝌蚪跳一次,一个石头不能站两个蝌蚪,跳可以跳$1到k,x \leq k \l ...