24. android dialog ——ProgressDialog 进度条对话框详解
来源:互联网 发布:vmware14 上安装linux 编辑:程序博客网 时间:2024/05/21 15:47
首先在onCreateDialog方法里创建一个ProgressDialog,如下:
接下来就是进度条的进度更新,因为对话框对象一直被当前Dialog保存着,所以onCreateDialog在下次调用对话框时不会在被调,所以
进度条更新操作不能在onCreateDialog里面,而是在onPrepareDialog里面进行。
首先要将进度条置为0
increamentProgressBy源码中是调用了ProgressBar的setProgress(mProgress + diff); mProgress是当前进度值,这里的diff就是-progressDialog.getProgress(),最后结果为0,所以也可以这么用,效果和调用incrementProgressBy一样的,如下:
值得一提的是,不能直接只用setProgress(0)来设置,这样的话,第一次弹出对话框效果可以和上面的一样,但是之后再弹出对话框的进度一直都是100。为什么这里不能直接用setProgress(0),查看源码可以知道,
mHasStarted第一次调用的时候是true,当进度条达到100%时会调用onStop方法(此方法为protected,无法直接调用),将mHasStarted设置为false,也就是无法setProgress(value)了,只能通过onStart来将mHasStarted设置为true。
当点击“显示进度条对话框”按钮,这时候需要很耗时然后才显示对话框,而往往都会导致假死,如果超过5秒未响应将强制关闭,所以这里需要添加个多线程来做进一步处理。而进度条的增加效果是很快的,所以这这里需要让大家看到效果,得停几毫秒后再继续。
为了使主线程不受影响(处理当前Activity的线程),在点击按钮且耗时操作完后需要发送消息给主线程,主线程再做相应处理。线程之间的消息传递和异步处理是通过Handler来做处理的,相关代码如下:
Handler的处理如下:(Handler具体说明网上很多,可以参考此处 http://my.unix-center.net/~Simon_fu/?p=652)
解释就到这里,先看个效果图:
实现步骤:
第一步,一个按钮用来点击后弹出对话框的
res/layout/progress_dialog_layout.xml
第二步,
src/com/dialog/activity/ProgressDialogActivity.java
源码下载地址:http://download.csdn.net/source/3244868
- 24. android dialog ——ProgressDialog 进度条对话框详解
- android dialog ——ProgressDialog 进度条对话框详解
- android dialog ——ProgressDialog 进度条对话框详解
- android dialog ——ProgressDialog 进度条对话框详解
- android dialog ——ProgressDialog 进度条对话框详解
- 【详解】Android ProgressBar ProgressDialog 进度条 进度条对话框
- 【详解】Android ProgressBar ProgressDialog 进度条 进度条对话框
- 对话框进度条——ProgressDialog
- Android ProgressDialog进度条对话框
- 【Android】进度条对话框ProgressDialog
- Android ProgressDialog 进度条对话框
- Android进度条自定义——类似ProgressDialog效果的Dialog
- Dialog对话框之ProgressDialog(进度条),DatePickerDialog,Toast
- Android 对话框中的进度条 ProgressDialog
- Android 对话框中的进度条 ProgressDialog
- Android 对话框中的进度条 (ProgressDialog)
- Android 对话框中的进度条 ProgressDialog
- Android 对话框中的进度条 ProgressDialog
- 解决IIS的“Server Application Error”故障
- iphone gmail email push
- SQL语句集锦
- Event
- ExecuteScalar为空的两种情况
- 24. android dialog ——ProgressDialog 进度条对话框详解
- using 语句(C# 参考)
- 数字转换成字符串时保留小数位数
- ISP
- 在linux 下安装oralce
- ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子
- 关闭多线程应用程序的所有线程
- [Agile]关于敏捷的具体实施过程的实验:初稿
- 使用 WebMethod 属性