ProgressDialog

为了安抚用户等待的焦急心情,我们用ProgressDialog。它的用法书上有例子,就是:

ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "", "请稍后", true, true);

handler.post(mTasks);


然而,我们用它一般都是在用intent开启一个新的activity的时候,你直接加上这句话,是达不到你想要的效果的。

你必须这样用:把用intent开启activity的这件事放在一个Runnable对象的run()方法中,然后用handler.post()方法来运行这个线程。代码如下:


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了...所以,我们要用一个线程来控制窗口消失的时间:

new Thread() {

public void run() {

try {

sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

myDialog.dismiss();

}

}.start();


那个sleep的时间是你估算下一个activity显示出来所需要的时间。OK了。

但显然这样做是不科学的。科学的做法是:首先在原avtivity中添加一个关闭Dialog的静态方法:

public static void closeProgressDialog() {

myDialog.dismiss();

}

然后在目标的activity中添加两个成员变量:


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()方法里的最后面加上发送消息的代码:

Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);


mHandler.sendMessage(message);


这样就能保证是在目标activity全部显现出来之后关闭那个progressDialog了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值