34UI组件之 ProgressDialogMessage

1.进度对话框 ProgressDialog

<1>简介

ProgressDialog是AlertDialog类的一个扩展,可以为一个未定义进度的任务显示一个旋转轮形状的进度动画,或者为一个指定进度的任务显示一个进度条。

一个对话框中显示一个进步指标和一个可选的文本信息或一个视图。只有文本信息或一个视图,可以同时使用。

对话框可以按back键取消。

<2>方法

setProgressStyle()

设置进度条风格

setTitle()

设置ProgressDialog 标题

setMessage()

设置ProgressDialog 提示信息

setIcon()

设置ProgressDialog 标题图标

setIndeterminate()

设置ProgressDialog 的进度条是否不明确

setCancelable()

设置ProgressDialog 是否可以按退回按键取消

setButton()

设置ProgressDialog 的一个Button

setProgress()

设置ProgressDialog 进度条进度

show()

显示ProgressDialog

1.弹出一个进度对话框,只有一个无限循环的小圆圈。

public void test1(View view) {

ProgressDialog dialog=new ProgressDialog(this);

dialog.setTitle("标题信息");                                      //设置ProgressDialog标题

dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

dialog.show();                                                        //显示ProgressDialog

}

2.弹出一个对话框,显示一个水平进度条

public void test2(View view) {

ProgressDialog dialog=new ProgressDialog(this);

dialog.setTitle("标题信息");                                      //设置ProgressDialog标题

dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);   //水平方向的进度条

dialog.setMax(100);                                             //设置长度

dialog.incrementProgressBy(10);                     //指定增加的进度

dialog.show();                                                        //显示ProgressDialog

}

3.将耗时任务与更新UI组件解耦,使用handleMessage方法。

首先需要在UI主线程中定义一个handler,用于接收其他线程中传递过来的message。

private Handler handler=new Handler(newCallback() {

public boolean handleMessage(Message msg) {

/更新UI组件的工作,就放置到这里。

//通过msg可以传递信息,来改变流程的走向。

//同时把不变的代码进行封装,把变化的部分通过参数msg传递。 msg对象需要具有应对所有变化的能力。

ProgressDialog dialog=(ProgressDialog)msg.obj;

dialog.cancel();

if(msg.arg1 == 1){

textView.setText("下载成功!!");

}else{

textView.setText("下载失败!!");

}

return false;

}

});

然后在其他线程中,设置一个message。该msg将其余线程中的dialog传递给了handler接收,从而修改了dialog。

public void test1(View view) {

ProgressDialog dialog=new ProgressDialog(this);

dialog.setTitle("标题信息");                                      //设置ProgressDialog 标题

dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

dialog.show();                                                        //显示ProgressDialog

new Thread(new Runable(){

public void run(){

try{

Thread.sleep(6000);

}

catch(InterruptedException e){

e.printStackTrace();

}

Message msg=new Message();

msg.obj=dialog;

msg.arg1 = 1;                              //1 下载成功;

//msg.arg1 = 2;                           //2 下载失败;

handler.sendMessage(msg);

//也可以设置一个flag,传递一些状态信息

}

});

}

第34讲 UI组件之 ProgressDialog和Message的更多相关文章

  1. 第25讲 UI组件之 AlertDialog 的各种实现

    第25讲 UI组件之AlertDialog 的各种实现 对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框. Android提供了多种对话框:警告对话框(A ...

  2. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  3. 第32讲 UI组件之 时间日期控件DatePicker和TimePicker

    第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置,    Time ...

  4. 第31讲 UI组件之 Gallery画廊控件

    第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...

  5. 第30讲 UI组件之 GridView组件

    第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...

  6. 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter

    第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...

  7. 第28讲 UI组件之 ListView和ArrayAdapter

    第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...

  8. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  9. 第19讲- UI组件之_Button、checkbox、radio

    第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...

随机推荐

  1. 流媒体开发之-腾讯体育NBA视频点播解析

    在前面解析赛事和排名,在这里解析点播视频,选取的是腾讯体育链接里面的点播. 首先还是先封装一个保存点播视频的相关信息的类 package com.jwzhangjie.model; import ja ...

  2. 关于使用axis调用webservice接口方法

    1.概述: 我们有时候会调用webserviec接口,我们向接口发送请求参数,从接口接收返回值. 2.形式: package client; import org.apache.axis.client ...

  3. 浅谈C++中的那些内存泄露

    尽管学过C语言.可是C++里面的一些基础还是不太懂,还须要再掌握. 老范也開始要讲C++设计模式了,必须快点看了.不然就要白花窝滴钱了. 对于内存泄露,我的个人理解就是程序在执行过程中,自己开辟了空间 ...

  4. FoxOne---一个快速高效的BS框架--(2)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  5. LDAP-常用命令

    1.recreating default ads instance ./ [root@dhcppc2 ~]# dsadm delete /usr/local/dsee7/var/dcc/ads #de ...

  6. VCS仿真查看coverage

    VCS仿真查看coverage Design compiler & simulate #!/bin/csh -f setenv NOVAS_HOME /EDASynopsys/verdi3-I ...

  7. C#如何以管理员身份运行程序(转)

    在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...

  8. ORACLE基本SQL语句-用户及建表篇

    一.用户相关SQL语句 /*新建用户*/create user ; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/grant connect,resource ...

  9. Sql省市三级联动一张表

    CREATE TABLE [dbo].[region]( [region_id] [int] NULL, [region_name] [varchar](50) COLLATE Chinese_PRC ...

  10. HibernateTemplate常用方法总结

    HibernateTemplate常用方法 (本文章内容相当于转载自:http://www.tuicool.com/articles/fU7FV3,只是整理了一下内容结构和修改了部分内容,方便阅读) ...