24.androiddialog——ProgressDialog进度条对话框详解

24.androiddialog——ProgressDialog 进度条对话框详解
⾸先在onCreateDialog⽅法⾥创建⼀个ProgressDialog,如下:
ProgressDialog(this);
半夏种植
//设置最⼤值为100progressDialog.setMa
x(100);//设置进度条风格
STYLE_HORIZONTAL
ProgressDialog.STYLE _HORIZONTAL);progressDialog.setTitl
接下来就是进度条的进度更新,因为对话框对象⼀直被当前Dialog保存着,所以onCreateDialog在下次调⽤对话框时不会在被调,所以进度条更新操作不能在onCreateDialog⾥⾯,⽽是在onPrepareDialog⾥⾯进⾏。⾸先要将进度条置为0
gress());increamentProgressBy源码中是调⽤了ProgressBar的setProgress(mProgress + diff); mProgress是当前进度值,这⾥的diff就是-Progress(),最后结果为0,所以也可以这么⽤,效果和调⽤incrementProgressBy⼀样的,如下:gress(0);
值得⼀提的是,不能直接只⽤setProgress(0)来设置,这样的话,第⼀次弹出对话框效果可以和上⾯的⼀样,但是之后再弹出对话框的进
度⼀直都是100。为什么这⾥不能直接⽤setProgress(0),查看源码可以知道,
s(value);
onProgressChanged();} else {
模式识别受体mProgressVal = value;}
mHasStarted第⼀次调⽤的时候是true,当进度条达到100%时会调⽤onStop⽅法(此⽅法为protected,
⽆法直接调⽤),将mHasStarted 设置为false,也就是⽆法setProgress(value)了,只能通过onStart来将mHasStarted设置为true。 当点击“显⽰进度条对话框”按钮,这时候需要很耗时然后才显⽰对话框,⽽往往都会导致假死,如果超过5秒未响应将强制关闭,所以这⾥需要添加个多线程来做进⼀步处理。⽽进度条的增加效果是很快的,所以这这⾥需要让⼤家看到效果,得停⼏毫秒后再继续。为了使主线程不受影响(处理当前Activity的线程),在点击按钮且耗时操作完后需要发送消息给主线程,主线程再做相应处理。线程之间的
消息传递和异步处理是通过Handler来做处理的,相关代码如下:
i++) {
handler.sendEmptyMe
rogress() >= 100) {    break;  }  try {    Thread.sleep(50);  } catch (InterruptedException e) {    e.printStackTrace();  }  } }}.start(); Handler的处理如下:(Handler具体说明⽹上很多,可以参考此处 ) public void
handleMessage(Messa ge msg) {
switch(msg.what) {  case INCREASE:
progressDialog.increm
entProgressBy(1);
P rogress() >= 100) {
// progressDialog.dismis
解释就到这⾥,先看个效果图:  实现步骤:第⼀步,⼀个按钮⽤来点击后弹出对话框的res/layout/progress_l
xmlns:android="schemas.android/
apk/res/android"android:layout_width="
android:layout_height=
2015世界机器人大会
"wrap_content">  <Button
android:id="@+id/butt on"
android:text="显⽰进
度条对话框"
android:layout_width="fill_parent"
android:layout_height=ourcm
"wrap_content"/>
</LinearLayout> 第⼆步,src/com/dialog/activity/ProgressDialogActivity.java import android.app.Activity;import android.app.Dialog;import android.app.Progress Dialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;
import android.widget.Button;
public class
ProgressDialogActivity
extends Activity {
private final int
PROGRESS_DIALOG =
1;
private final int
INCREASE = 0;
private
ProgressDialog
progressDialog = null;
private Handler
handler = null;
tm2005@Override
无过氧化氢酶血症public void
onCreate(Bundle
savedInstanceState) {
nstanceState);
setContentView(R.layo
ut.progress_dialog_lay
out);
Button button =
源码下载地址:

本文发布于:2024-09-21 10:44:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/409660.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进度条   对话框   需要   主线   处理
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议