【转】 Android用于提示等待的ProgressDialog
2014-08-05 09:30
351 查看
原文地址:http://blog.csdn.net/wleing/article/details/6086321
为了安抚用户等待的焦急心情,我们用ProgressDialog。它的用法书上有例子,就是:
[java] view plaincopy
ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
它的用法一般都是在用intent开启一个新的activity的时候,你直接加上这句话,是达不到你想要的效果的。
你必须这样用:把用intent开启activity的这件事放在一个Runnable对象的run()方法中,然后用handler.post()方法来运行这个线程。
代码如下:
[java] view plaincopy
Handler handler = new Handler();
Runnable mTasks = new Runnable() {
public void run() {
Intent intent = new Intent();
intent.setClass(YourClass .this,EditHome.class);
startActivity(intent);
}
};
final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
这样算是达到我们要的效果了,可是,那个ProgressDialog的窗口并没有关闭,所以后面还要加上myDialog.dismiss();
但这样的话,窗口出来就消失,我们又看不到ProgressDialog了...所以,我们要用一个线程来控制窗口消失的时间:
[java] view plaincopy
new Thread() {
public void run() {
try{
sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
myDialog.dismiss();
}}.start();
那个sleep的时间是你估算下一个activity显示出来所需要的时间。OK了。
但显然这样做是不科学的。科学的做法是:首先在原avtivity中添加一个关闭Dialog的静态方法:
[java] view plaincopy
public static void closeProgressDialog() {
myDialog.dismiss();
}
然后在目标的activity中添加两个成员变量:
[java] view plaincopy
private static final int EVENT_TIME_TO_CHANGE_IMAGE = 100;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what){
case EVENT_TIME_TO_CHANGE_IMAGE:
YourPrimaryClass.closeProgressDialog();
break;
}
}};
其中Handler中注册了关闭窗口的条件和关闭动作(调用静态方法)。然后在这个activity的onCreat()方法里的最后面加上发送消息的代码:
[java] view plaincopy
Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);
mHandler.sendMessage(message);
这样就能保证是在目标activity全部显现出来之后关闭那个progressDialog了。
为了安抚用户等待的焦急心情,我们用ProgressDialog。它的用法书上有例子,就是:
[java] view plaincopy
ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
它的用法一般都是在用intent开启一个新的activity的时候,你直接加上这句话,是达不到你想要的效果的。
你必须这样用:把用intent开启activity的这件事放在一个Runnable对象的run()方法中,然后用handler.post()方法来运行这个线程。
代码如下:
[java] view plaincopy
Handler handler = new Handler();
Runnable mTasks = new Runnable() {
public void run() {
Intent intent = new Intent();
intent.setClass(YourClass .this,EditHome.class);
startActivity(intent);
}
};
final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
这样算是达到我们要的效果了,可是,那个ProgressDialog的窗口并没有关闭,所以后面还要加上myDialog.dismiss();
但这样的话,窗口出来就消失,我们又看不到ProgressDialog了...所以,我们要用一个线程来控制窗口消失的时间:
[java] view plaincopy
new Thread() {
public void run() {
try{
sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
myDialog.dismiss();
}}.start();
那个sleep的时间是你估算下一个activity显示出来所需要的时间。OK了。
但显然这样做是不科学的。科学的做法是:首先在原avtivity中添加一个关闭Dialog的静态方法:
[java] view plaincopy
public static void closeProgressDialog() {
myDialog.dismiss();
}
然后在目标的activity中添加两个成员变量:
[java] view plaincopy
private static final int EVENT_TIME_TO_CHANGE_IMAGE = 100;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what){
case EVENT_TIME_TO_CHANGE_IMAGE:
YourPrimaryClass.closeProgressDialog();
break;
}
}};
其中Handler中注册了关闭窗口的条件和关闭动作(调用静态方法)。然后在这个activity的onCreat()方法里的最后面加上发送消息的代码:
[java] view plaincopy
Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);
mHandler.sendMessage(message);
这样就能保证是在目标activity全部显现出来之后关闭那个progressDialog了。
相关文章推荐
- Android用于提示等待的ProgressDialog
- 我的Android笔记(十)—— ProgressDialog的简单应用,等待提示 (转载)
- Android 自动旋转提示对话框,可用于提示等待
- 我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
- 【转】我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
- 我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
- Android中用于耗时的一个程序分析(利用ProgressDialog)
- 转载 Android ListView滚动提示等待框
- Android中如何判别WebView加载完毕并使用ProgressDialog进行提示
- android 登录,发送等待ProgressDialog(多线程)
- android ProgressDialog 提示窗口 代码
- 【android】自定义ProgressDialog实现暂时隐藏进度值并显示等待状态(附源码下载)
- android通话时第二通电话呼叫等待提示音音量大小
- android ProgressDialog 不显示的提示信息的问题
- 在Android程序里显示等待滚动圈(使用ProgressDialog)| Show waiting rolling circle in android application (using ProgressDialog)
- android 实现progressdialog 等待界面
- android 自定义POP window弹出窗口,用于信息提示
- Android中如何判别WebView加载完毕并使用ProgressDialog进行提示
- ProgressDialog的简单应用,等待提示
- Android ListView滚动提示等待框