第34讲 UI组件之 ProgressDialog和Message
第34讲UI组件之 ProgressDialog和Message
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的更多相关文章
- 第25讲 UI组件之 AlertDialog 的各种实现
第25讲 UI组件之AlertDialog 的各种实现 对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框. Android提供了多种对话框:警告对话框(A ...
- 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler
第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...
- 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置, Time ...
- 第31讲 UI组件之 Gallery画廊控件
第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...
- 第30讲 UI组件之 GridView组件
第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...
- 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter
第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...
- 第28讲 UI组件之 ListView和ArrayAdapter
第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...
- 第27讲 UI组件之 ScrollView与底部动态添加数据
第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...
- 第19讲- UI组件之_Button、checkbox、radio
第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...
随机推荐
- mongodb的应用场景
这篇文章总结的比较到位:http://www.tuicool.com/articles/YnmaAj
- Centos6 下启动httpd报错 Could not reliably determine the server's解决方法
在启动httpd的时候报错: 修改/etc/httpd/conf/httpd.conf 配置,去掉ServerName 前的#(或者手动添加ServerName localhost:80)然后重启ht ...
- Sea.js
SeaJS与RequireJS最大的区别 执行模块的机制大不一样-----------------------------------由于 RequireJS 是执行的 AMD 规范, 因此所有的 ...
- 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]
有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 当给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入运算符号“+”,或插入一个运算符号“-”,或不插入 ...
- windows快捷键命令汇总整理
访问当前屏幕的设置,打开"设置"栏 按 Windows 徽标键+"i"打开当前屏幕(例如,"开始".桌面或 Windows 应用)的 ...
- C#中的一些技巧
VS编辑器的虚线如何设置和取消:使用快捷键Ctrl+E+C VS自带的反编译工具是什么:il dasm
- 用Ant实现Java项目的自动构建和部署(转)
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一. ...
- rhel6.4 using centos source
rhel 默认的 yum 依赖于 rhn,要注册收费才能 update,改用 centos 的源: rpm -e yum* --nodeps rpm -qa | grep yum | xargs rp ...
- OpenSuse下编译MonoDevelop
当访问Monodevelop.com官网下载的安装包,安装后,发现并不是最新版.在OpenSuse下载的是3.0版本.根据官网的指示,可以自己下载源码进行编译.按官网的指引: 1. $ git clo ...
- (转)js 正则表达式之test函数讲解
该方法的返回值是布尔值,通过该值可以匹配字符串中是否存在于正则表达式相匹配的结果,如果有匹配内容,返回ture,如果没有匹配内容返回false,该方法常用于判断用户输入数据的合法性,比如检验Email ...